2012-05-23 3 views
0

Вот пример перегрузки операторов из языка программирования C++:о примере оператора перегрузки

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

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

Я не ясно, о том, что делает «Int I» делать в определениях Х и 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.

Для операторов нет определения, поэтому их фактическая семантика неизвестна.

Смежные вопросы