我有一种情况,由于重构错误,一位同事引入了类似于以下代码的错误:
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
。这有什么用,为什么语言允许呢?