私有继承
计算机术语
私有继承后,基类所有成员在派生类中为private成员。
具体介绍
私有基类的公用成员和保护成员在私有派生类中的访问属性相当于派生类中的私有成员,即派生类的成员函数能访问它们,而在派生类外不能访问它们。私有基类的私有成员在派生类中称为不可访问的成员,只有基类的成员函数可以引用它们,一个基类成员在基类中的访问属性和在私有派生类中的访问属性可能是不相同的。私有基类的成员在私有派生类中的访问属性见下表:
例:
class Student1: private Student
{public:
void display_1()
private:
int age;
string addr;
};
私有继承作用
看似没有任何意义,但私有继承可以帮助我们复用基类代码,并防止基类接口的曝光。
看下面一个例子:
#include
using std::cout;
using std::endl;
class engine {
public :
};
class wheel {
public :
};
class car : private engine, private wheel {
public :
void start();
void move();
void stop();
};
void car::start() {
engine::start();
wheel::start();
}
void car::move() {
engine::move();
wheel::move();
}
void car::stop() {
engine::stop();
wheel::stop();
}
int main(int argc, char* argv[]) {
car ca;
ca.start();
ca.move();
ca.stop();
return 0;
}
例子中类car私有继承自类engine和类wheel,类car的三个成员函数start()、move()、stop()分别通过调用类engine和类wheel的成员函数实现,这样做的好处在于不需要重写而直接使用继承自基类的函数,同时因为是私有继承,能通过类car的对象不能直接调用类engine和类wheel的函数,防止不必要函数的曝光,因为对于使用类car对象的用户来说并不需要关心start()、move()、stop()的具体实现过程,也不需要控制engine和wheel的动作。
参考资料
最新修订时间:2024-05-21 16:03
目录
概述
具体介绍
参考资料