#include <string>
#include <iostream>
std::string(foo);
int main()
{
std::cout << foo.size() << "\n";
return 0;
}
得到0
的结果,而不是未定义foo
的预期编译错误。
它如何做到这一点?这叫什么?
答案 0 :(得分:10)
eta
与
相同std::string(foo); //#1
与
相同std::string (foo); //#2
std::string foo; //#3
中的括号是多余的。 #2
中需要它们,因为没有空格分隔#1
和std::string
。
答案 1 :(得分:0)
定义std::string(foo);
调用std::string
的 default 构造函数。根据定义,默认的构造函数是可以不带参数调用的构造函数,实际上您没有提供任何构造函数。
默认构造的字符串为empty
,因此其大小的确为0。