C ++中的空构造函数

Empty constructor in c++

好吧,我理解我将获得一些随机值的部分,但是代码段中的Foo()构造函数的行为是否与未定义构造函数时编译器提供的默认公共构造函数一样?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
using namespace std ;

class Foo{
        int i  ;
    public:
        Foo(){
        }
        void disp(){
            cout<<"i ="<<i  ;
        }
};

int main(){
    Foo bar1,bar2 ;
    bar1.disp();
    cout<<"
"
;
    bar2.disp();
}

我见过有人写这样的空构造函数,但我不明白为什么/何时使用它?


用户定义的不带参数的ctor,不带ctor-init-list且具有空主体的行为几乎与default-ctor相同。
不过有一个区别,它永远都不算是琐碎的事!

像这样的显式默认设置将避免这种差异以及随之而来的潜在性能下降:

1
Foo() = default; // Needs C++11

类函数声明后的"默认"是什么意思?

另请参阅,以轻松检测差异:http://en.cppreference.com/w/cpp/types/is_constructible


提供空构造函数的定义时,编译器不会提供默认构造函数,也不会对成员初始化其自己的方式。您只是不允许编译器执行其默认初始化。


每个类都需要一个空的构造函数。如果要使用初始化逻辑构造函数,则可以将其与空构造函数一起添加。在某些语言中,如果您未明确编写空的构造函数,则编译器将为您生成它。

如果只是创建一个类的实例,它什么都不做。

您可以使用参数重载它,以获得另一个初始化其属性的构造函数。