Fab*_*ian 2 c++ initialization variable-assignment copy-constructor assignment-operator
标题说明了一切.但是,请string作为任何课程的占位符.
std::string s1("hello"); // construct from arguments
std::string s2 = "hello"; // ???
std::string s3; // construct with default values
s3 = "hello"; // assign
Run Code Online (Sandbox Code Playgroud)
我想知道声明s2是否与for s1或for 相同s3.
son*_*yao 14
案例s2是复制初始化.这是初始化,而不是作为案例的分配s3.
请注意,对于std::string,效果是相同的为s1和s2时,apporiate构造(即,std::string::string(const char*))将被调用来构造对象.但是复制初始化和直接初始化之间存在差异(例如s1); 对于复制初始化,不会考虑显式构造函数.假设std::string::string(const char*)已声明explicit,这意味着不允许从const char*to 进行隐式转换std::string; 然后第二种情况不会再次编译.
复制初始化比直接初始化更不容许:显式构造函数不转换构造函数,也不考虑复制初始化.
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |