省流

  • 访问子类同名成员 直接访问即可
  • 访问父类同名成员 需要加作用域
  • 当子类与父类拥有同名的成员函数,子类会隐藏父类中的成员函数,加作用域可以访问到父类中的同名函数

同名成员属性

代码示例

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
#include<iostream>
using namespace std;


class Base {
public:
Base() {
m_A = 100;
}
int m_A;
};

class son :public Base {
public:
son() {
m_A = 200;
}
int m_A;
};

int main() {
son s;
cout << "son 下 m_A= " << s.m_A << endl;
cout << "Base 下 m_A= " << s.Base::m_A << endl;
return 0;
}

同名成员函数

  • 如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有的同命成员函数
  • 如果访问到父类中被隐藏的同名成员函数,需要加作用域

代码示例

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
#include<iostream>
using namespace std;


class Base {
public:
Base() {
m_A = 100;
}
void func() {
cout << "Base - func()调用" << endl;
}
void func(int A){
cout << A << endl;
}
int m_A;
};

class son :public Base {
public:
son() {
m_A = 200;
}
void func() {
cout << "son - func()调用" << endl;
}
int m_A;
};

int main() {
son s;
s.func();
s.Base::func();
s.Base::func(100);
return 0;
}