2012-05-23 81 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

操作符沒有定義,所以它們的實際語義是未知的。