在使用C++代码时,我已经看过几次类型错误:
QString str = str.toUpper();
Run Code Online (Sandbox Code Playgroud)
这可能是一个相当容易犯的错误,但它编译和执行(有时崩溃,有时没有).我看不出任何你想要做的事情.
一些测试表明,复制构造函数是调用的,而不是默认的,并且该对象是从复制构造函数中给出的.
任何人都可以解释为什么这不是编译器错误,甚至是警告?
从技术上讲,str当您到达等号时,会定义对象,因此可以在该点使用它.
错误在于尝试用自己初始化对象,并允许编译器警告(如果它能够检测到它).但是,由于在每种情况下都不可能进行检测,因此不需要编译器.
例如,int x = f(x);如果int f(const int&)不使用其参数的值,则完全正确.编译器如何知道它是否还没有看到函数体呢?
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |