前言:
初始化是指变量在创建的同时就给予一个初始值。
拷贝构造初始化 与 赋值构造初始化
拷贝构造初始化 | 赋值构造初始化 |
string s2(s1) | string s2 = s1 |
string s3("123") | string s3 = "123" |
从语法上来说,上面的第一列和第二列得到的结果是一样的,但是他们的执行流程确有区别。
二者区别:
赋值初始化:
1)表达式中出现赋值符号;
2)初始化的过程包括 “创建临时对象” 和 “调用拷贝构造函数” 两步。
直接初始化:
1)不使用赋值符号;
2)调用拷贝构造函数。
注意:
尽量使用直接初始化,比如使用 QString str("123");而不是QString str = "123";