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
通常我们使用公有继承,以继承父类中所有的成员变量和函数,但是,只有父类中被声明为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
相关文章推荐
- c++中私有继承和公有继承的特点
- C++继承:公有,私有,保护
- C++继承:公有,私有,保护
- 『C/C++』公有继承,私有继承,和保护继承
- C++继承类型:公有、保护、私有、虚拟
- C++继承:公有,私有,保护
- C++的私有继承、公有继承和保护继承
- C++ 公有继承,私有继承和保护继承
- C#不存在私有继承和保护继承,只有公有继承,这点和C++相比还是简单了很多
- C++学习日记18——C++继承: 公有public, 私有private, 保护protect
- C++公有继承、私有继承以及友元
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- C++继承:公有,私有,保护
- C++公有,私有,保护继承
- C/C++ 公有继承、保护继承和私有继承的对比详解
- C++继承:公有,私有,保护
- C++继承:公有,私有,保护
- C++继承:公有,私有,保护
- C++继承:公有,私有,保护