为什么以下定义了一个强制转换运算

时间:2012-11-29 14:33:53

标签: c++

从库中看到标题定义

operator const wchar_t*() const

任何人都可以向我解释为什么上面定义了一个强制转换操作符?

3 个答案:

答案 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*()是转换函数。