间接访问权限(基类派生类)(67)

先看代码:++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Baseclass
{
public:
Baseclass() {
}
~Baseclass(){};
virtual void demo (int a) const {
cout << "asdf" << endl;
}
};
class Driverclass : public Baseclass
{
public:
Driverclass(){}
~Driverclass(){}
private:
void demo(int a) const {
cout << "qwe" << endl;
}
};
void main() {
Baseclass* pb;
Baseclass* p = new Baseclass;
Driverclass* d = new Driverclass;
pb = p;
pb->demo(2);
pb = d;
pb->demo(2);
system("pause");
}

看demo虽然是driverclass的私有函数,可通过pb我们却访问到了他的私有成员。

如果直接:d->demo(2)必定会报错。

因为demo在基类就被声明为public了,所以如此的间接访问是可以的。

// //