这两种初始化成员变量的方法之间有区别吗?
Is there a difference between these 2 methods of initialising member variables?
Note::Note(Traymenu *trayMenuIn, QWidget *parent) :
ui(new Ui::Note){
ui->setupUi(this);
Note::Note(Traymenu *trayMenuIn, QWidget *parent){
ui = new Ui::Note;
ui->setupUi(this);
这两种类型都在起作用。上面的代码是QtCreator建议的,下面的代码是如果我必须自己编写它会做的事情。
Note的私人成员是
Ui::Note *ui;
只有第一种形式是初始化。第二种形式使用未定义的值初始化ui
,然后为其赋值。
您应该首选第一种形式(初始化)。请参阅相关的C++常见问题解答条目。
虽然差异很小,但我更喜欢QtCreator建议的代码片段:它使用初始化语法而不是逻辑上表示初始化的代码的赋值语法。
由于正在初始化的成员是一个指针,因此即使关闭优化也不会降低性能。但是,最好养成尽可能多地使用初始化列表进行初始化的习惯,因为这可以防止构造函数本身内部的潜在编码问题。
相关文章:
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- static_cast<unsigned>(签名)与标准::bit_cast<unsigned>(签名)之间有区别吗?
- 为什么 .cpp 文件和 .h 文件之间有区别?
- C++:调用运算符和调用其实现之间有区别吗
- 用户定义的类和标准类之间有区别吗?
- 这两个数组之间有区别吗?
- 这些在C 中初始化C数组的方式之间有区别吗?
- 这两种初始化成员变量的方法之间有区别吗?
- 在DirectX中,深度值中存储了哪些值?这在DX9和DX11之间有区别吗
- 如果"foo"是引用变量,[&foo]{ ... } 捕获和 [foo]{ ... } 捕获之间有区别吗?
- 在进行正向声明时,不命名参数和命名参数之间有区别吗
- 这两个fors之间有区别
- C++ 中的以下类似语句之间有区别吗?
- int x{} 之间有区别吗?和整数 x = 0;
- 在分配器中使用new函数和*alloc函数时,它们之间有区别吗
- <winsock.h> 和 <winsock2.h> 之间有区别吗?
- 这两个与灰泥相关的声明之间有区别吗
- 数组模板和内置数组类型之间有区别吗
- 这些存储指针数组的方法之间有区别吗
- int&a 和 int &a 之间有区别吗?