2010-12-07 211 views

回答

6

这是一个user-defined conversion,它允许您从用户定义的类型转换为另一种类型。

你可以做这样的事情,使用它从String8对象获得const char*

String8 str = "Hello"; 
const char *cptr = str; // gets const char* from str 

std::strlen(str); // std::strlen expects a const char* 
2

这不是太在乎你如何使用它(明确的),因为让它被隐式使用。在std::string上使用.c_str()的地方,可以放弃.c_str()。当然,这个问题不明确:std::string由于很好的原因缺少这样的操作符,并且偶尔会发现自己不得不显式调用操作符,以便编译器知道要使用哪个行为。

编辑:例如响应于UncleBens'注释:

#include <iostream> 

struct X 
{ 
    operator const char*() { return "hello world\n"; } 
}; 

int main() 
{ 
    X x; 

    std::cout << x.operator const char*(); 
} 
+0

显式调用所述的操作装置铸造String8到char指针? – UncleBens 2010-12-07 07:48:09

相关问题