关于运算符重载的示例

时间:2012-05-23 17:47:14

标签: c++

以下是从C ++编程语言重载运算符的示例:

struct X{
     int I;
     X(int);
     X operator+(int);
};

struct Y{
    int I;
    Y(X);
    Y operator+(X);
    operator  int();
}

我不清楚“int I”在X和Y的定义中做了什么。此外,我不明白如何在X的定义中分析“operator int()”的功能。

2 个答案:

答案 0 :(得分:2)

operator int()提供了从结构转换为int的权限,因此您可以写:

X(4);
Y y(x);
int a = y; // calls Y::operator int()

该转换的确切含义取决于运营商的实施方式

结构中的int I声明成员变量,(两者)名为I,类型为int

答案 1 :(得分:2)

我假设两个结构中的int I代表对象的内部状态。

Y operator+(X);

这是y + x返回类型为Y的新对象的运算符。

operator  int();

这是转换运算符,这意味着Y可以转换为int

没有运算符的定义,因此它们的实际语义是未知的。