lur*_*rks 13 c++ constructor instantiation
我想使用C++在堆栈中构造一个对象.你知道这些与调用构造函数的方法有什么区别(有和没有括号):
一个)
MyClass object ;
b)
MyClass object() ;
我正在使用MFC,当为主应用程序构造全局变量时,如果我使用后一种方式,我得到一个例外,我认为这两种方式是等价的.
谢谢你们的任何信息.
Leo*_*Hat 24
这是C++的难点之一.
MyClass object();
Run Code Online (Sandbox Code Playgroud)
是在C++中定义函数原型的方式,因此编译器认为您正在尝试在另一个函数的中间声明另一个函数.
如果要调用默认构造函数(即不带参数的构造函数),请改用以下语法:
MyClass object;
Run Code Online (Sandbox Code Playgroud)
另见Garth Gilmour对现已删除的问题的回答你最喜欢的语法是什么?:
在C++中
Run Code Online (Sandbox Code Playgroud)Employee e1("Dave","IT"); //OK Employee e2("Jane"); //OK Employee e3(); //ERROR - function prototype
例如:
class MyClass
{
public:
MyClass()
{x = 0;}
MyClass(int X)
{x = X;}
private:
int x;
};
int main()
{
MyClass myObject(56); // initialize x to value '56'
MyClass myObject2; //calls default constructor and initializes x to 0
return 0;
}
Run Code Online (Sandbox Code Playgroud)