c++ - 以下c++构造函数之间有什么区别?

标签 c++ class constructor

<分区>

我见过 C++ 类构造函数以两种不同的方式初始化成员,但效果相同。假设我们有一个简单的类:

class myClass
{
public:
    myclass();//default constructor

private:
    int a;
    int b;
    bool c;
};

案例一:

myClass::myClass()
/* Default constructor */
{
    a=5;
    b=10;
    c=true;

    //do more here
}

案例二:

myClass::myClass()
/* Default constructor */

    :a(5),
    b(10),
    c(true)
{
    //do more in here
}

编译后两者有什么区别?即使没有区别,是否有“首选”方法?

最佳答案

第一个构造函数首先调用a,b,c 的默认构造函数(基本上将它们分配给随机值)然后将它们分配给提供的值。第二个构造函数直接为 a,b,c 调用适当的构造函数。

一般来说,第二个构造函数更有效,因为成员初始化一次,如果你有没有默认构造函数的成员,你必须以这种方式初始化它们,或者在 C++11 中使用非静态成员初始化器。

关于c++ - 以下c++构造函数之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149724/

相关文章:

c++ - 类前向声明​​ C++

Python 内置类型和用户定义类型之间的比较

c++ - 无法让派生类使用其基类的构造函数

android - 何时在 Android 中为 ComponentName 使用哪个构造函数?

c++ - 伊辛模型模拟偏移临界温度

c++ - N=2^x,为真就写真。为什么错了?

c++ - 阻止编译器优化的多态性示例?

c++ - boost::asio tcp 数据库服务器

javascript - JS 类字段

c++ - 关于 C++ 中的复制控制