C++继承时的名字遮蔽(二)
生活随笔
收集整理的這篇文章主要介紹了
C++继承时的名字遮蔽(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基類成員和派生類成員的名字一樣時會造成遮蔽,這句話對于成員變量很好理解,對于成員函數要引起注意,不管函數的參數如何,只要名字一樣就會造成遮蔽。換句話說,基類成員函數和派生類成員函數不會構成重載,如果派生類有同名函數,那么就會遮蔽基類中的所有同名函數,不管它們的參數是否一樣
#include<iostream> using namespace std; //基類Base class Base{ public:void func();void func(int); }; void Base::func(){ cout<<"Base::func()"<<endl; } void Base::func(int a){ cout<<"Base::func(int)"<<endl; } //派生類Derived class Derived: public Base{ public:void func(char *);void func(bool); }; void Derived::func(char *str){ cout<<"Derived::func(char *)"<<endl; } void Derived::func(bool is){ cout<<"Derived::func(bool)"<<endl; } int main(){Derived d;d.func("c.biancheng.net");d.func(true);//d.func(); //compile errord.func(10); //compile errord.Base::func();d.Base::func(100);return 0; }總結
以上是生活随笔為你收集整理的C++继承时的名字遮蔽(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++继承时的名字遮蔽(一)
- 下一篇: C++类继承时的作用域嵌套,破解C++继