1、當 父類和子類 成員變量同名時 在子類就近原則 選擇本作用域的子類成員
2、如果在子類中 必須使用父類中的同名成員 必須加上父類的作用域。
class Base
{
//父類的私有數據 一旦涉及繼承 在子類中不可見
public:
int num;
public:
Base(int num)
{
this->num = num;
cout<<"Base有參構造int"<<endl;
}
~Base()
{
cout<<"析構函數"<<endl;
}
};
class Son:public Base
{
private:
int num;
public:
Son(int num1,int num2):Base(num1)
{
this->num = num2;
cout<<"有參構造int int"<<endl;
}
~Son()
{
cout<<"析構函數"<<endl;
}
void showNum(void)
{
//如果在子類中 必須使用父類中的同名成員 必須加上父類的作用域
cout<<"父類中的num = "<<Base::num<<endl;
//當 父類和子類 成員變量同名時 在子類就近原則 選擇本作用域的子類成員
cout<<"子類中的num = "<<num<<endl;
}
};
void test01()
{
Son ob1(10,20);
ob1.showNum();
}
運行結果:
3、子類可以藉助 父類的公有方法 間接的操作 父類的私有數據(不可見的數據)
class Base
{
private:
int num;//父類的私有數據 一旦涉及繼承 在子類中不可見
public:
Base(int num)
{
this->num = num;
cout<<"Base有參構造int"<<endl;
}
~Base()
{
cout<<"析構函數"<<endl;
}
int getNum(void)
{
return num;
}
};
class Son:public Base
{
private:
int num;
public:
Son(int num1,int num2):Base(num1)
{
this->num = num2;
cout<<"有參構造int int"<<endl;
}
~Son()
{
cout<<"析構函數"<<endl;
}
void showNum(void)
{
//如果在子類中 必須使用父類中的同名成員 必須加上父類的作用域
cout<<"父類中的num = "<<getNum()<<endl;
//當 父類和子類 成員變量同名時 在子類就近原則 選擇本作用域的子類成員
cout<<"子類中的num = "<<num<<endl;
}
};
void test01()
{
Son ob1(10,20);
ob1.showNum();
}
運行結果: