如何使用C++中的默认构造函数定义和声明变量?

Cas*_*ash 3 c++ constructor default-constructor

根据我对声明和定义的理解,在全球范围内:

MyClass instance();//Declares a function that returns a MyClass
MyClass instance;//Declares an instance of MyClass
Run Code Online (Sandbox Code Playgroud)

是否可以声明一个变量并将其定义为在全局范围内使用默认构造函数?如果我使用结构而不是类,该怎么办?

编辑:

好的,MyClass instance;调用默认构造函数也是如此.任何人都可以解释这与这个例子的一致性:

int a; // not default constructed, will have random data 
int b = int(); // will be initialised to zero
Run Code Online (Sandbox Code Playgroud)

Leo*_*Hat 7

MyClass instance;
Run Code Online (Sandbox Code Playgroud)

将调用默认构造函数(即没有参数的构造函数).

这是违反直觉的,因为要使用参数调用重载的构造函数,您将执行以下操作:

MyClass instance(param1, param2);
Run Code Online (Sandbox Code Playgroud)

逻辑会告诉你传入一个空参数列表来调用默认构造函数,但是下面的代码......

MyClass instance();
Run Code Online (Sandbox Code Playgroud)

...看起来像编译器的原型而不是MyClass对象的构造.

有一个之间没有差别structclass在C++中,除了使用struct具有public默认构件和class具有private由缺省成员.