C++名字隐藏
如果派生類中新增一個(gè)成員變量,該成員變量與基類中的成員變量同名,則新增的成員變量就會(huì)遮蔽從基類中繼承過來的成員變量。同理,如果派生類中新增的成員函數(shù)與基類中的成員函數(shù)同名,則該新增的成員函數(shù)就會(huì)遮蔽從基類中繼承過來的成員函數(shù)。
#include<iostream> using namespace std;class basic { public:void setx(int a){x = a;}void sety(int b){y = b;}int getx(){return x;}int gety(){return y;} private:int x;int y; };class derived : public basic { public:void setx(char *a){x = a;}char* getx(){return x;} private:char * x; };int main() {derived d1;d1.setx("class"); //OK// d1.setx(50); //compile errord1.basic::setx(50); //OKcout << "x=" <<d1.getx() << endl;cout << "x=" <<d1.basic::getx() << endl;return 0; } x=class x=50從上例中,我們可以看出被遮蔽了的基類的成員變量或成員函數(shù)并非是沒有繼承過來,而僅僅是被派生類的同名成員變量和成員函數(shù)給遮蔽了,調(diào)用的時(shí)候需要用到類名加上域解析操作符。
總結(jié)
- 上一篇: C++改变基类成员在派生类中的访问属性
- 下一篇: C++继承机制下的构造函数