首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于基类和派生类的有关问题

2012-04-14 
关于基类和派生类的问题class CBase{public:char foo( int )protected:int m_bardouble m_foo_bar}cla

关于基类和派生类的问题
class CBase
{
public:
char foo( int );
protected:
int m_bar;
double m_foo_bar;
};
class CDerived : public CBase
{
public:
char foo( string );
bool bar( CBase* pb );
void foobar();
protected:
string m_bar;
};
下面的代码, 正确的是( D )
A, CDerived d; d.foo( 1024 );
B, void CDerived::foobar() { m_bar = 1024; }
C, bool CDerived::bar( CBase* pb ) { return m_foo_bar == pb->m_foo_bar; }
D, void CDerived::foobar(){ CBase::m_foo_bar = 2048; }
麻烦各位给具体分析下,A B C D具体是为什么呢 谢谢了


[解决办法]
A: foo(1024) 匹配的函数是char foo( int ); 但是由于子类中重新定义了foo,覆盖了基类的foo,不涉及重载也不是多态,调用错误。
B:一样的,m_bar在子类中重新定义 覆盖了
C: pb->m_foo_bar,m_foo_bar是protected成员,只能由子类对象访问,不能用基类对象访问。
D: CBase::m_foo_bar ,加上了类作用域标示符,访问基类的double类型的m_foo_bar,没问题

热点排行