1
#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 中未调用原型函数(是否打算定义变量?)。为什么它不抛出错误?

4

3 回答 3

8

因为这不是错误。

您的代码已经违反了最令人头疼的解析(总而言之,test testObj();没有定义变量,它声明了一个函数)。

于 2012-07-08T21:08:30.947 回答
3

简单地说,因为声明一个函数(例如您声明的函数)并不是错误。不过,警告应该足够有用。

于 2012-07-08T21:08:52.833 回答
1

从 Main 中的构造函数调用中删除 ()

int main()
{
    test testObj;
    cout<<"HERE"<<endl;
} 
于 2012-07-08T21:10:15.850 回答