我想使用 C++ 在堆栈中构造一个对象。
你知道这两种调用构造函数的方式(带括号和不带括号)有什么区别吗:
a)
MyClass object ;
b)
MyClass object() ;
我正在使用 MFC,在为主应用程序构造全局变量时,如果我使用后一种方式,则会出现异常,我认为这两种方式是等效的。
谢谢你们提供的任何信息。
这是 C++ 的陷阱之一。
MyClass object();
是一个函数的方式原型是在 C++ 中定义的,因此编译器认为您正在尝试在另一个函数的中间声明另一个函数。
如果您想调用默认构造函数(即不带参数的构造函数),请使用以下语法:
MyClass object;
另请参阅 Garth Gilmour 对现已删除的问题的回答您(最不)最喜欢的语法陷阱是什么? https://stackoverflow.com/a/163129/1709587:
In C++
Employee e1("Dave","IT"); //OK
Employee e2("Jane"); //OK
Employee e3(); //ERROR - function prototype
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)