Ash*_*mar 0 c++ abstract-class instantiation pure-virtual
这是代码的格式:
class C
{
public:
C();
virtual ~C() = 0;
};
class D : public C
{
public:
D();
~D();
};
C::C(){
}
C::~C(){
}
D::D(){
}
D::~D(){
}
int main(){
C *c = new C();
D *d = new D();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试实例化时,c我收到以下错误:
1>c:\main.cpp(59): error C2259: 'C' : cannot instantiate abstract class
Run Code Online (Sandbox Code Playgroud)
我知道我无法调用虚拟析构函数,但在概念上有一些我不知道的东西.有人可以解释一下吗?
您无法实例化,C因为您已明确表示它的析构函数未定义.
你可以这样做:
class C
{
public:
C();
virtual ~C() {}
};
Run Code Online (Sandbox Code Playgroud)
代替.
C只要你不尝试实例化它就可以完全"按原样" 保留(即你只创建Ds,但你可以将它们作为Cs 传递.
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |