1、当子类成员变量与父类成员变量同名时
2、子类依然从父类继承同名成员
3、在子类中通过作用域分辨符::进行同名成员区分(在派生类中使用基类的同名成员,
显式地使用类名限定符)
4、同名成员存储在内存中的不同位置 #include <iostream>using namespace std;class A{public: int a; int b;public: void get() { cout<<"b "<<b<<endl; } void print() { cout<<"AAAAA "<<endl; }protected:private:};class B : public A{public: int b; int c;public: void get_child() { cout<<"b "<<b<<endl; } void print() { cout<<"BBBB "<<endl; }protected:private:};void fTest(){ B b1; b1.print(); b1.A::print(); b1.B::print(); //默认情况 return;}//同名成员变量void vTest(){ B b1; b1.b = 1; // b1.get_child(); b1.A::b = 100; //修改父类的b b1.B::b = 200; //修改子类的b 默认情况是B b1.get(); cout<<"hello..."<<endl; return ;}int main(int argc, const char** argv) { vTest(); fTest(); 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
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
总结:同名成员变量和成员函数通过作用域分辨符进行区分
|