2012-05-23 55 views
0

这里的一个例子是运营商从C++编程语言超载的例子:有关运算符重载

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

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

我不清楚什么是“诠释我”做在X和Y的定义,除了,我不知道如何分析的功能,“操作INT()”中的X.

+0

成员函数的主体没有被定义,所以这些类不做任何事情...... –

回答

2

operator int()的定义提供了从结构转换为int,所以你可以写:

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

确切这意味着转换取决于操作是如何实现的

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

2

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

Y operator+(X); 

这是一个操作符,对于y + x返回Y类型的新对象。

operator int(); 

这是转换算子,这意味着一个Y可以转换为一个int

操作符没有定义,所以它们的实际语义是未知的。