0

以下是从 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()”的功能。

4

2 回答 2

2

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

Y operator+(X);

这是一个用于y + x返回类型的新对象的运算符Y

operator  int();

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

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

于 2012-05-23T17:50:41.720 回答
2

operator int()提供int从结构到的转换,因此您可以编写:

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

该转换的确切含义取决于运算符的实现方式

结构中int I的声明成员变量,(都)命名I和类型int

于 2012-05-23T17:50:20.063 回答