std :: string如何使用名称作为其构造函数参数构造一个对象?

时间:2019-02-19 10:53:02

标签: c++

#include <string>          
#include <iostream>        

std::string(foo);          

int main()                 
{                          
    std::cout << foo.size() << "\n";                                                
    return 0;              
}                          

得到0的结果,而不是未定义foo的预期编译错误。

它如何做到这一点?这叫什么?

2 个答案:

答案 0 :(得分:10)

eta

相同
std::string(foo);  //#1        

相同
std::string (foo); //#2         

std::string foo; //#3 中的括号是多余的。 #2中需要它们,因为没有空格分隔#1std::string

答案 1 :(得分:0)

定义std::string(foo);调用std::string default 构造函数。根据定义,默认的构造函数是可以不带参数调用的构造函数,实际上您没有提供任何构造函数。

默认构造的字符串为empty,因此其大小的确为0。