fre*_*low 9 c++ copy-constructor
std::string x(x);
Run Code Online (Sandbox Code Playgroud)
这对我的编译器崩溃非常严重.这是否意味着我应该this != &that在我自己的拷贝构造函数中进行测试,或者我可以假设没有客户端会如此愚蠢?
您不应该尝试对尝试严重崩溃的代码进行测试.请参阅Null参考.它说
"正如你必须假设一个非空指针有效,你必须假设一个引用是有效的.你必须对你的程序员有信心."
我想补充一下
...您必须假设副本的来源有效.
如果你"修理"你的案子,该怎么办?
string x = string(x);
Run Code Online (Sandbox Code Playgroud)
用自己初始化某些东西是未定义的行为,这可能甚至意味着一旦调用它你甚至无法在以后检测到它.假设编译器检测到它并且没有spite为nasal demons生成程序集,而不是调用你的拷贝构造函数?
在实践中,您可以假设客户端不是那么愚蠢,如果是这样,他们的业务是调试它并弄清楚.
| 归档时间: |
|
| 查看次数: |
807 次 |
| 最近记录: |