多态与作用域

来源:互联网 发布:head first php好吗 编辑:程序博客网 时间:2024/04/29 04:43
#include "stdafx.h"#include <iostream>#include <string>using namespace std;class A{protected:    int m_data;public:    A(int data = 0)    {        m_data = data;    }    int GetData()    {        return doGetData();    }    virtual int doGetData()    {        return m_data;    }};class B : public A{protected:    int m_data;public:    B(int data = 1)    {        m_data = data;    }    int doGetData()    {        return m_data;    }};class C : public B{protected:    int m_data;public:    C(int data = 2)    {        m_data = data;    }};void main(){    C c(10);    cout << c.GetData() << endl;     // 1    cout << c.A::GetData()<< endl;   // 1 A::的作域只用于GetData(),函数中调用的虚函数不受用作用域限制    cout << c.B::GetData()<< endl;   // 1 B::的作域只用于GetData(),函数中调用的虚函数不受用作用域限制    cout << c.C::GetData()<< endl;   // 1 C::的作域只用于GetData(),函数中调用的虚函数不受用作用域限制    cout << c.doGetData()<< endl;    // 1    cout << c.A::doGetData()<< endl; // 0 A::的作域限制doGetData()    cout << c.B::doGetData()<< endl; // 1 B::的作域限制doGetData()    cout << c.C::doGetData()<< endl; // 1 C::的作域限制doGetData()}
// 对于虚函数来说,是根据所调用的实体来动态确定所调用的函数定义的。对于非虚函数来说,用指针调用时,是根据指针类型确定调用函数的</span>


0 0
原创粉丝点击