从库中看到标题定义
operator const wchar_t*() const
任何人都可以向我解释为什么上面定义了一个强制转换操作符?
答案 0 :(得分:1)
例如,您希望将对象强制转换为wchar_t *
,此运算符将被提供。
e.g。
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~
答案 1 :(得分:1)
它的语言语法。 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);
总之,它只是语言的一个很好的特性,它使我们的代码看起来更好,更易读。
答案 2 :(得分:1)
operator typename()
形式的任何成员函数都是转换函数。
const wchar_t*
是类型名称,因此operator const wchar_t*()
是转换函数。