关于一个继承的问题~间接调用类的私有成员问题
#include<iostream>using namespace std;
class A{
public:
void dump()const{....}
protected:
void get_x(){x++;}
private:
int x;
};
class B:public A
{
public:
void get(){ get_x();}
/* void get_y(){ y=x;} */
void compare(A &a){ a.get_x();}
protected:
void set(){...}
private:
int y;
};
int main()
{
B b;
A a;
/* b.get_y(); */ //wrong! x在B类不可见,不能访问.
b.get();//ok! 由于x是私有的,所以派生类不可见,但能间接访问.
/* (a); */ //wrong!这个是我之前一直没想通的,但是现在清楚了。因为对象a调用的get_x()权限仅属于A,所以对B不可见。
return 0;
}
我在其他地方看的这么个例子~~~虽说明白继承的几种方式,但红色部分b.get; 和(a); 都调用了A类中的函数和私有成员变量,但为什么b.get();可以(属于间接调用A类中的私有成员??),而后者不可以呢。是以为后面用到的是A类对象的缘故吗?
初学菜鸟求教~~