#include <iostream>
using namespace std;
class test{
public:
test() { cout<<"CTOR"<<endl; }
~test() { cout<<"DTOR"<<endl; }
};
int main()
{
test testObj();
cout<<"HERE"<<endl;
}
输出:
HERE
编译器跳过“test testObj();”行并用警告编译其余部分,并在运行时生成输出。警告是“VC ++ 2008中没有调用原型函数(是一个变量定义?)。为什么它不会抛出错误?
答案 0 :(得分:8)
因为这不是错误。
你的代码与most-vexing parse相违背(总之,test testObj();
没有定义变量,它声明了一个函数)。
答案 1 :(得分:3)
简单地说,因为声明一个函数(如您声明的函数)并不是错误的。但是,警告应该足够有用了。
答案 2 :(得分:1)
从Main
中的构造函数调用中删除()int main()
{
test testObj;
cout<<"HERE"<<endl;
}