public 方式继承
基类成员对派生类的可见性对派生类来说,基类的公有成员和保护成员可见,基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态;基类的私有成员不可见,基类的私有成员仍然是私有的,派生类不可访问基类中的私有成员。
基类成员对派生类对象的可见性对派生类对象来说,基类的公有成员是可见的,其他成员是不可见的。
所以,在公有继承时,派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类中的公有成员和保护成员。
简单来说,派生类能访问基类的public, protected成员,继承过来权限不变,派生类对象只能访问基类public成员。
测试代码如下:
class A
{
private:
int m_data1;
void print1() {
cout << "private print1" << endl; }
protected:
int m_data2;
void print2() {
cout << "protected print2" << endl; }
public:
A(int x = 1, int y = 2, int z = 3) : m_data1(x), m_data2(y), m_data3(z) {
}
int m_data3;
void print3() {
cout << "protected print3" << endl; }
};
class B : public A
{
public:
void test_public() {
cout << m_data3 << endl;
print3();
}
void test_protected() {
cout << m_data2 << endl;
print2