gpt4 book ai didi

c++ - 引用您声明的同一个变量

转载 作者:可可西里 更新时间:2023-11-01 15:25:16 24 4
gpt4 key购买 nike

在使用 C++ 代码时,我曾多次看到以下类型错误:

QString str = str.toUpper();

这可能是一个相当容易犯的错误,但它可以编译和执行(有时会崩溃,有时不会)。我看不出在任何情况下这会是您真正想要做的事情。

一些测试表明调用了复制构造函数,而不是默认的复制构造函数,并且对象是从复制构造函数内部给定的。

谁能解释为什么这不是编译器错误,甚至不是警告?

最佳答案

从技术上讲,对象 str 是在您到达等号时定义的,因此可以在该点使用它。

错误在于尝试用自身初始化对象,允许编译器对此发出警告(如果它能够检测到)。但是,由于并非在所有情况下都可以进行检测,因此不需要编译器。

例如,如果 int f(const int&) 不使用其参数值,则 int x = f(x); 是完全正确的。如果编译器还没有看到函数体,它怎么知道呢?

关于c++ - 引用您声明的同一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com