给定以下代码片段:
#include <string>
#include <iostream>
int main()
{
std::string prefix("->"), middle(), suffix("<-");
std::cout << "Test: " << prefix << middle << suffix << std::endl;
return 0;
}
高级 C++ 程序员会立即看到,middle()
它不是在调用std::string
的默认 ctor,而是一个函数声明。
不过有趣的是:为什么 gcc 会产生以下输出:
Test: ->1<-
与 Visual Studio 的链接器错误相比?有人知道这里发生了什么吗?