题2、现有以下代码,则编译时会产生错误的是()。【中国某著名计算机金融软件公司2005年面试题】
struct Test
{
Test(int) {}
Test() {}
void fun() {}
};
int _tmain(int argc, _TCHAR* argv[])
{
Test a(1); //语句1
a.fun(); //语句2
Test b(); //语句3
b.fun(); //语句4
return 0;
}
A、语句1
B、语句2
C、语句3
D、语句4
解析:Test b() 是一个参数为void、返回为Test对象的函数的声明,不像Test a(1)需要预先赋值,所以Test b()改为Test b即可。但在程序中这个错误在编译时是检测不出来的。出错的是语句4,它是编译不过去的。
答案:D