两种类型的构造函数/哪一种更好?

时间:2015-07-09 03:45:05

标签: c++

假设我们有两个版本的同一个类Simple:

1

#include <iostream>

using namespace std;

class Simple
{
public:
    Simple() { }
    Simple(int c)
    { 
        data = c;
        cout << data << endl; 
    }
private:
    int data;
};

int main()
{
    Simple obj(3);
    return 0;
}

2

#include <iostream>

using namespace std;

class Simple
{
public:
    Simple() { }
    Simple(int c) : data(c) { cout << data << endl; }
private:
    int data;
};

int main()
{
    Simple obj(3);
    return 0;
}

编译,运行并给出相同的结果。应该使用哪一个,它们之间是否存在内部差异?感谢。

1 个答案:

答案 0 :(得分:2)

最好使用初始化列表来初始化成员变量,这是它的用途。在复杂对象的情况下,也可能有效率优势,因为您可以跳过默认初始化。如果该成员没有默认构造函数,或者是const或引用,那么您将别无选择,只能将其放入初始化列表中。

我更喜欢将函数体保持为单独的行,以防我需要在其中设置断点。