C++ 中覆写(override) 例解

来源:互联网 发布:营运数据分析怎样写 编辑:程序博客网 时间:2024/06/05 05:28

请看下面例题给出答案:

#include <iostream>using namespace std;class A{public:A(int data= 0){m_data = data;}int GetData() {return doGetData();}virtual int doGetData(){return m_data;}protected:int m_data;};class B:public A{public:B(int data=1){m_data = data;}int doGetData(){return m_data;}protected:int m_data;};class C:public B{public:C(int data = 2){m_data = data;}protected:int m_data;};int main(){C c(10);cout<<c.GetData()<<endl;cout<<c.A::GetData()<<endl;cout<<c.B::GetData()<<endl;cout<<c.C::GetData()<<endl;cout<<c.A::doGetData()<<endl;cout<<c.B::doGetData()<<endl;cout<<c.C::doGetData()<<endl;return 0;}


记住两点,即可知答案:

1.构造函数从最初的基类开始构造,各个类的同名变量没有形成覆盖,都是单独的变量。

2.再注意一个就近调用原则,如果父辈存在相关接口,则优先调用,父辈接口,如果父辈不存在相关的接口则调用祖父辈接口

 

原创粉丝点击