【问题标题】:What is the difference of () and = in creating class instances? [duplicate]() 和 = 在创建类实例时有什么区别? [复制]
【发布时间】:2020-11-16 11:33:48
【问题描述】:

我尝试创建 2 个这样的类的对象

#include <iostream> 
using namespace std;

class MyNum
{
private: 
    int m_num;
public:
    MyNum(int num) : m_num{ num }
    {
    }
};

int main()
{
    MyNum one(1);
    MyNum two = 2;
}

这两行有什么区别

MyNum one(1);
MyNum two = 2;

【问题讨论】:

标签: c++ class object constructor copy-constructor


【解决方案1】:

MyNum one(1) 执行 direct initalizationMyNum two = 2; 执行 copy initialization。它们在这里的作用是一样的,即通过构造函数MyNum::MyNum(int)初始化对象。

如果你将构造函数标记为explicit,那么第二个就变成了格式错误。

复制初始化比直接初始化更宽松:显式构造函数不转换构造函数,也不考虑复制初始化。

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 2020-11-18
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多