【发布时间】:2018-11-21 05:45:45
【问题描述】:
我读到“派生类不继承对私有数据成员的访问。但是,它确实继承了一个完整的父对象,其中包含该类声明的任何私有成员。”
但是,在下面的程序中,我可以访问私有数据成员。我做错了什么?
#include <iostream>
using namespace std;
class A
{
private:
int x;
public:
void printdata()
{
cout<<"x="<<x<<endl;
}
};
class B:public A
{
};
int main()
{
B obj;
obj.B::printdata();
return 0;
}
【问题讨论】:
-
您没有访问
A的私有成员(即int x);您正在访问公共方法A::printdata()。Printdata()是class A的成员,所以可以查看私有成员。 -
但我调用了 obj.B::printdata();
-
obj.B::printdata()是public。试试cout << obj.x;看看会发生什么。
标签: c++ inheritance