这两种初始化成员变量的方法之间有区别吗?

时间:2014-02-28 18:43:11

标签: c++ qt initialization

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建议的,如果我必须自己编写代码,那么下面的代码就是我要做的。

注意私人会员是

Ui::Note *ui;

2 个答案:

答案 0 :(得分:4)

只有第一个表单是初始化。第二个表单使用未定义的值初始化ui,然后为其分配值。

你应该更喜欢第一种形式(初始化)。请参阅相关的C++ FAQ entry

答案 1 :(得分:2)

虽然差别很小,但我更喜欢QtCreator建议的代码片段:它使用初始化语法而不是逻辑上代表初始化的代码的赋值语法。

由于正在初始化的成员是指针,因此即使关闭优化也不会有性能损失。但是,最好养成使用初始化列表尽可能初始化的习惯,因为这可以防止构造函数本身内部存在潜在的编码问题。