2014-11-10 4 views
1

Я узнал, как выполнять перегрузку оператора оператора вставки потока. Но остается одно сомнение.Ostream << перегрузка оператора и его тип возврата

#include<iostream> 

class INT 
{ 
    int i; 
    friend std::ostream& operator<<(std::ostream&,INT&); 
public: 
    INT():i(100){} 
}; 

std::ostream& operator<<(std::ostream& obj,INT & data) 
{ 
    obj<<data.i; 
    return obj; 
} 

int main() 
{ 
    INT obj; 
    std::cout<<obj; 
} 

Какое значение имеет return obj;?

Мы вынуждены сделать это return из-за синтаксиса оператора < < без какой-либо пользы?

+4

Подумайте, что здесь происходит: 'cout << a << b << c;'. – juanchopanza

ответ

6

Помните, как вы можете написать код так:

cout << "The data is: " << somedata << endl; 

Это фактически то же самое, как:

((cout << "The data is: ") << somedata) << endl; 

Для этого, чтобы работать, оператор << должен вернуть поток.

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