首页 > 试题广场 >

以下代码是哪一句可能导致的编译错误? #include

[单选题]
以下代码是哪一句可能导致的编译错误?
#include <iostream>
using namespace std;
class Test
{
public:
	Test() { cout << "i like zk"; }
	Test(int) { cout << "i like wangyi"; }
	void exe() { cout << "this is my choice"; }
};
int main()
{
	Test a(1);//1
	a.exe();  //2
	Test b(); //3
	b.exe();  //4
	Test c;   //5
	c.exe();  //6
        return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
在想要利用默认构造函数或者无参构造函数(Test())来构造对象时,对象的声明不需要空的括号对,否则,会被认为这是一个返回值为类类型的无参函数(Test b()),那么用一个函数去调用一个类的成员函数显然是错误的。
发表于 2018-08-13 17:15:25 回复(7)
Test b();  表示声明了一个函数b,不要误以为定义了一个b的Test对象。此时执行b.exe();自然就会出错了。
发表于 2020-09-30 22:40:02 回复(0)
第3句程序是声明了一个普通函数,函数的返回值类型为 Test。那么第4句就是错的了
发表于 2020-12-06 19:10:16 回复(0)
明明就是程序员夹藏私货,三心两意喜欢钟珂又喜欢王奕
发表于 2022-01-13 10:24:08 回复(0)
Test b(); 不正确明白了,但是Test a(1);正确还是没懂,Test a(1)构造的函数对象不应该是Test(int) { cout <<"i like wangyi"; }这个嘛,
发表于 2023-01-04 15:42:39 回复(0)
类的无参构造不应该带括号,否则被认为是声明一个返回类型为一个类对象的函数
发表于 2022-06-26 22:16:08 回复(0)

编译器上效果!!!

第三句是声明可以这样写,但是第四句编译时一定报错.

编辑于 2024-03-03 10:12:45 回复(0)
3只声明函数而不给出定义可以通过编译
发表于 2023-09-28 21:00:03 回复(0)
不懂就问,wangyi是网易,那么zk是啥呢?
发表于 2021-02-20 18:46:05 回复(0)