J C*_*per 1 c++ type-conversion
我有一个方法:
void Foo::Bar(const std::string &str)
{
printf("%d", str.length());
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它可以无缝地工作
foo.Bar("hello");
Run Code Online (Sandbox Code Playgroud)
我以为"hello"是const char *,不是std::string?
可以通过两种方式隐式转换用户定义的类型:
任何采用单个参数但不使用关键字"explicit"的构造函数都定义了隐式转换(从参数类型到正在构造的对象的类型).标准字符串类故意不使用"显式"以便提供此转换的便利.
因为std :: string有一个构造函数const char *,所以C++会自动为你构造一个临时的字符串对象.
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |