【发布时间】:2013-11-17 12:06:02
【问题描述】:
我有一个从父类派生的类。它调用父类的成员。然而,由于子类的功能需求,需要修改成员的行为。我是这样写代码的:
class parentClass
{
public:
void memberA()
{
memberB();
}
void memberB()
{
behaviorParent;
}
};
class childClass:public parentClass
{
public:
void memberB()
{
behaviorChild;
}
};
int main()
{
child naughty;
naughty.memberA();
}
我期待一个行为Child 来作为结果。然而,相反,程序给了我一个behaviorParent而不是behaviorChild。你知道这是为什么吗?还有,如何在不复制父成员代码的情况下修复它?
【问题讨论】:
-
A()方法是什么? -
请插入真实代码,这不会编译
-
这只是一个例子。如果需要编译,将 memberB 更改为 cout 即可。但我不认为这对提出问题有多大帮助,所以我没有这样做......
-
A() 和 B() 有自己的用途。原始代码很长。但这里只表示 classParent 和 classChild 共享一个确切的 A() 但不同的 B()。
标签: c++ class inheritance overriding