【发布时间】:2020-09-20 13:48:57
【问题描述】:
我正在使用 VC++。
我定义了一个父类:
class A
{
A();
A(int a);
virtual ~A();
virtual void DoSomething();
}
然后定义一个子类:
class B: public A
{
virtual void DoSomething();
}
在 B 类中,只引入了新版本的 DoSomething。其他所有函数,包括构造函数和析构函数都和A一样。
例如,以下两个构造函数对 B 都可以:
B MyB;
B MyB(1);
在这种情况下,我需要创建构造函数 B() 和 B(int a) 吗?
我尝试忽略B()中的构造函数和析构函数,希望它可以从A继承,但是编译器会报错:
B MyB(1);
【问题讨论】:
-
另外几点说明,
virtual关键字仅在最顶层的基类中需要。而且我真的建议您在覆盖函数时使用特殊标识符override(如class B : public A { public: void DoSomething() override; };) -
@Someprogrammerdude,抱歉我的错误,我已修复错误。 B 继承自 A。
标签: c++ class inheritance visual-c++ constructor