類:繼承-3-訪問衝突
阿新 • • 發佈:2018-11-10
#include <iostream> //命名衝突: int a;//全域性變數a class O { void t() { a = 0;//全域性變數a } }; class A { public: int a;//自己成員變數a void h() { this->a = 0;//訪問自己成員變數a a = 0;//訪問自己成員變數a ::a = 1;//訪問全域性變數a } void i(int a) { a = 0;//訪問形參a this->a = 1;//訪問自己成員變數a ::a = 1;//訪問全域性變數a } }; class B : public A { public: int a;//自己類的成員變數a void f() { a = 0;//訪問自己類的成員變數a this->a = 0;//訪問自己類的成員變數a A::a = 1;//訪問父類的成員變數a ::a = 2;//訪問全域性變數a } void g(int a)//形參變數a { a = 0;//訪問形參變數a this->a = 1;//訪問自己類的成員變數a A::a = 1;//訪問父類的成員變數a 訪問父類中的同名變數要加作用域 ::a = 2;//訪問全域性變數a } }; void main() { std::cout<<sizeof(A) <<std::endl;//4 std::cout<<sizeof(B) <<std::endl;//8 B b; //[][][][] [][][][] b.f(); //[01][00][00][00] [00][00][00][00] b.a = 3;//訪問B類中的a //[01][00][00][00] [03][00][00][00] b.A::a = 4;//訪問B類中的a //[04][00][00][00] [03][00][00][00] system("pause"); }