c++中覆盖的问题
来源:百度知道 编辑:UC知道 时间:2024/06/22 12:34:30
#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 <&
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 <&
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;
应该改成
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;
大哥,你函数调用不写()的啊
我运行的结果是的确是 1 1 1 1 1 0 1 1
我使用了g++ 4.2.4 和 g++ 3.4.2 都是这个结果
可能是您使用的编译器不符合标准的原因 或者 是您弄错了某些地方