gpt4 book ai didi

c++ - 在构造函数中初始化字段 - 初始化列表与构造函数主体

转载 作者:IT老高 更新时间:2023-10-28 13:59:00 26 4
gpt4 key购买 nike

我已经在 C++ 中工作了一段时间,但我不确定这两个选项之间的区别:

public : Thing(int _foo, int _bar): member1(_foo), member2(_bar){}

public : Thing(int _foo, int _bar){
member1 = _foo;
member2 = _bar;
}

我感觉它们做同样的事情,但这两种语法之间是否存在实际差异。其中一个是否比另一个更安全,它们处理默认参数的方式是否不同。

不完全习惯第一个例子,所以如果我在上面犯了错误,我深表歉意。

最佳答案

如果 member1member2 是非 POD(即非 P< em>lain Old Data) 类型:

public : Thing(int _foo, int _bar){
member1 = _foo;
member2 = _bar;
}

等价于

public : Thing(int _foo, int _bar) : member1(), member2(){
member1 = _foo;
member2 = _bar;
}

因为它们会在构造函数体开始执行之前被初始化,所以基本上完​​成了两次工作。这也意味着,如果这些成员的类型没有默认构造函数,那么您的代码将不会编译。

关于c++ - 在构造函数中初始化字段 - 初始化列表与构造函数主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9903248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com