【发布时间】:2014-06-22 04:57:58
【问题描述】:
class A {
public:
A(int) {
cout << "Base class" << endl;
}
};
class B : virtual public A {
public:
virtual void do_something() = 0;
};
class C : public B {
public:
C()
: A(1) {
cout << "C class" << endl;
}
virtual void do_something() {
}
};
编译器错误:当为 C 创建对象时,编译器会产生类似
的错误错误:没有匹配的函数调用'A::A()'
为什么编译器需要 A 类的默认构造函数?
【问题讨论】:
-
感谢主clang格式。
-
阅读有关这些概念的 ISOCPP 常见问题解答部分isocpp.org/wiki/faq/proper-inheritance & isocpp.org/wiki/faq/basics-of-inheritance
标签: c++