今天的一个笔试题目
#include <iostream>
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; }
};
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.doGetData()<<endl;
cout<<c.A::doGetData()<<endl;
cout<<c.B::doGetData()<<endl;
cout<<c.C::doGetData()<<endl;
system("PAUSE");
return 0;
}
///////////////////////////////////////////////////////
运行的结果是
1
1
1
1
1
0
1
1
不明所以……
www.77xue.com哦
内容回答
眼花……
Class C 完全就是障眼的,关键在于 Class B 和 Class A 以及 Class A 内的 virtual int doGetData(); 和 Class B 的 int doGetData() { return m_data; };
【lightnut】:
#include <iostream>
using namespace std;
class A
{
protected:
int m_data; // A::m_data
public:
A(int data = 0){m_data = data; } // A::m_data = data (0)
int GetData(){return doGetData();}
virtual int doGetData(){ return m_data;} // A::m_data
- 上一篇:数学试笔试题目