前言:

初始化是指变量在创建的同时就给予一个初始值。

拷贝构造初始化 与 赋值构造初始化

拷贝构造初始化

赋值构造初始化

string s2(s1)

string s2 = s1

string s3("123")

string s3 = "123"

从语法上来说,上面的第一列和第二列得到的结果是一样的,但是他们的执行流程确有区别。

 

二者区别:

赋值初始化:

1)表达式中出现赋值符号;

2)初始化的过程包括 “创建临时对象” 和 “调用拷贝构造函数” 两步。

直接初始化:

1)不使用赋值符号;

2)调用拷贝构造函数。

 

注意:

尽量使用直接初始化,比如使用 QString str("123");而不是QString str = "123";