【发布时间】:2019-08-23 06:18:05
【问题描述】:
class A{
public: virtual void getName() = 0;
};
class B: public A{
public:
B(int a){
cout<< "B Name : " << a <<endl;
}
void getName() override { cout << "Class B" << endl; }
};
class C: public B{
public:
C(int a){
cout<< "C Name : " << a <<endl;
}
void getName() override { cout << "Class C" << endl; }
};
int main()
{
B *b = new B(10);
b->getName();
C *c = new C(20);
c->getName();
}
我正在尝试创建 B 和 C 类的对象。但它给了我这个错误
main.cpp:31:15: error: no matching function for call to ‘B::B()’
C(int a){
^
main.cpp:22:9: note: candidate: B::B(int)
B(int a){
^
谁能向我解释为什么会这样?为什么它不创建类对象?
【问题讨论】:
-
也不相关:请让那些单参数构造函数
explicit。
标签: c++ function initialization virtual