0

从库中看到标题定义

operator const wchar_t*() const

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

4

3 回答 3

1

例如,您想将一个对象转换为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~
于 2012-11-29T14:39:41.783 回答
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);

总之,它只是语言的一个很好的特性,它使我们的代码看起来更漂亮、更易读。

于 2012-11-29T14:51:21.957 回答
1

表单的任何成员函数operator typename()都是转换函数。

const wchar_t*是一个类型名称,因此operator const wchar_t*()是一个转换函数。

于 2012-11-29T15:00:21.610 回答