从库中看到标题定义
operator const wchar_t*() const
任何人都可以向我解释为什么上面定义了一个强制转换运算符?
例如,您想将一个对象转换为wchar_t *
,将提供此运算符。
例如
MyString a("hello"); // is a string hold ansi strings. but you want change into wide chars.
wchar* w = (wchar_t*)a; // will invoke the operator~
它是语言的语法。C++ 允许您创建自己的Operators
例如:
struct A {
bool operator==(const int i);
bool operator==(const char c);
bool operator==(const FOO& f);
}
这允许使用方便地比较我们的类型,哪个语法看起来更好。A a; if(a == 5) {}
另一种方法是实现一个equals(int value)
看起来像A a; if(a.equals(5)) {}
.
铸造也是如此。
struct Angle {
float angle;
operator const float() const {return angle;}
}
Angle theta;
float radius = 1.0f;
float x = radius*cos(theta);
float y = radius*sin(theta);
总之,它只是语言的一个很好的特性,它使我们的代码看起来更漂亮、更易读。
表单的任何成员函数operator typename()
都是转换函数。
const wchar_t*
是一个类型名称,因此operator const wchar_t*()
是一个转换函数。