我得到错误在简单的C++继承
error: no matching function for call to 'Base::Base()'
代码
class Base {
private:
char *field;
public:
Base(char *c){
field = c;
}
};
class Derived : public Base {
public:
Derived(char *c){}
};
错误,只要我添加
Base() {}
构造消失。为什么C++编译器严格要求没有参数的构造函数Base()
?如果创建一个没有参数的Base
对象会有什么意义?
P.S.举例来说,我不具备类似的Java代码相同的错误,因为我必须添加
super("")
为Derived
构造体的第一个语句。这真的很合理。
“?如果不带参数创建的基本对象是没有意义的什么?”那么你的“派生”类是没有意义的。 – 2013-05-10 16:44:42
“*如果创建不带参数的Base对象会有什么意义?*”那么,不要那样做? – 2013-05-10 16:47:24
在发布这个混乱的HTML时,你在想什么?如果你给它一个机会,Stackoverflow处理语法突出显示非常好... – filmor 2013-05-10 16:48:11