为什么`string str = str;`进行编译(仅对某些编译器发出警告)

时间:2019-05-28 15:01:09

标签: c++

我有一种情况,由于重构错误,一位同事引入了类似于以下代码的错误:

using namespace std;

int main()
{
    std::string s = s; // using s to initialize itself is fine?
    std::cout << s << std::endl;
    return 0;
}

代码可以正常编译,并且仅在clang中生成警告。注释行应等效于用尚未调用构造函数的对象为string::string(s)调用构造函数s。这有什么用,为什么语言允许呢?

0 个答案:

没有答案