您的位置:首页 > 编程语言 > C语言/C++

C++中有私有继承和公有继承之分

2011-05-21 22:30 501 查看
C++中有私有继承和公有继承之分。
通常我们使用公有继承,以继承父类中所有的成员变量和函数,但是,只有父类中被声明为private以及protected的成员变量和成员函数在子类中师可见的。而不是说子类只继承父类中的公有成员。而那些在父类中的公有成员被继承至子类后,仍然保持公有,除非我们显式地将其声明为私有。
如:
private:
Base::f;
Base::h;
其中f和h均为父类中的函数名。

当私有继承时,仍然会继承所有父类的血统。但是,从继承来的所有成员(变量和函数),在子类中都变为私有。如:
class A{
private:
int a;
public:
A():a(0){
}
virtual ~A(){}

int getA(){
return this->a;
}
};

class B:private A{//私有继承

public:
int getAA(){
return getA();//B继承了A的getA方法,但是是私有的
}

};

int main(int argc,char* argv[])
{
B* b =new B();
cout << b->getAA() << endl;
//b->getA()会报错,因为getA是私有的。
return 0;
}

当然我们可以显示地声明被继承的成员为公有。
如:
public:
Base::f;
Base::h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: