关于C++的域

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
36
37
38
#include <iostream>
using namespace std;
 
class A
{
public:
    int _a;
 
    A()
    {
        _a = 1;
    }
 
    void print()
    {
        cout << _a << endl;
    }
};
 
class B : public A
{
public:
    int _a;
 
    B()
    {
        _a = 2;
    }
};
 
int main()
{
    B b;
    b.print();
    cout << b._a << endl;
 
    return 0;
}

print() 访问的永远是 A 域里的 _a

C++ Primer(第三版中文版) p738 提到:

虽然基类的成员可以被直接访问,但是它们仍然属于基类的域。

关键就在“域”,B 的 print() 并不是直接把父类 A 的 print() 复制过来,而是直接访问的 A 域的 print()

纯属个人意见……

Leave a Reply

You must be logged in to post a comment.