Des*_*tor 3 c++ gcc virtual-functions g++
根据这个虚函数必须定义,否则链接器抱怨并报告错误"未定义引用vtable",但为什么ideone编译器不会为以下代码提供任何错误?
#include <iostream>
using namespace std;
class Test
{
public:
Test()
{
cout<<"test() is called\n";
}
virtual void test();
};
int main() {
Test t;
// your code goes here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您没有正确阅读文档.相关段落的第一句话说:
ISO C++标准规定必须定义非纯虚拟类的所有虚方法,但不要求违反此规则的任何诊断[class.virtual]/8.
因此,预计您可能不会收到错误,特别是因为您实际上并未调用test()(尽管构造函数的输出中存在谎言).
实际上,只有在下列情况下,您才有可能获得此诊断:
virtual您没有定义析构函数的对象但不要搞错:你的程序有不确定的行为.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |