【发布时间】:2013-09-21 05:49:39
【问题描述】:
以下面的例子为例。您使用什么术语来描述具有与基类不同的参数的继承类?我了解subbase 隐含调用base()。你不会调用这个覆盖,对,因为基构造函数仍然被调用?
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
class base
{
public:
base()
{
cout << "Hello!\n";
}
};
class subbase : public base
{
public:
subbase(string s)
{
cout << s << endl;
}
};
int main()
{
subbase test("Hello World!\n");
return 0;
}
【问题讨论】:
-
它只是一个构造函数。请记住,基础子对象也需要构建...
-
@Kerrek SB 是的,正如我在帖子中提到的,我知道
base()被隐式调用。但是,如果有人想留下评论以与实现者交流,他希望继承的构造函数有参数,而基类没有,你会怎么说呢? -
我可能会谈论“派生类构造函数”或“从基类派生的类中的构造函数”。
-
我不会使用“重载”,因为在基类和派生类构造函数之间从来没有任何重载决议(它们有不同的名称)。我会说它像“派生类中的构造函数应该与这个构造函数有不同的签名(
base构造函数)”。也就是说,这似乎是一件毫无意义的事情,因为派生类的全部意义在于允许状态变化,因此通常期望它们不会总是具有与基类相同的构造参数。 -
@jmstoker 它没有超载。它是“派生类构造函数的参数应该与基类构造函数的参数不同”。
标签: c++ inheritance terminology