以下是从 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()”的功能。
以下是从 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()”的功能。
我假设这int I
两个结构都代表对象的内部状态。
Y operator+(X);
这是一个用于y + x
返回类型的新对象的运算符Y
。
operator int();
这是一个转换运算符,这意味着Y
可以将 an 转换为int
。
运算符没有定义,因此它们的实际语义是未知的。
operator int()
提供int
从结构到的转换,因此您可以编写:
X(4);
Y y(x);
int a = y; // calls Y::operator int()
该转换的确切含义取决于运算符的实现方式
结构中int I
的声明成员变量,(都)命名I
和类型int