Когда operator <<
относится к оператору ввода и когда он относится к побитовой сдвигу влево?Когда оператор << ссылается на оператор ввода и когда на побитовый сдвиг влево?
Это будет выводить 10
, а operator <<
относится к сдвигу влево.
cout << a.b() << a.a.b << endl;
И это будет выводить 11
, operator <<
относится к оператору вставки.
cout << a.b();
cout << a.a.b ;
Я смущен, когда будет operator <<
(при использовании с cout
), обратитесь к оператору левого сдвига?
#include <iostream>
using namespace std;
class A {
public:
A() { a.a = a.b = 1; }
struct { int a, b; } a;
int b();
};
int A::b(){
int x=a.a;
a.a=a.b;
a.b=x;
return x;
};
int main(){
A a;
a.a.a = 0;
a.b();
cout << a.b() << a.a.b << endl; // ?????
return 0;
}
По умолчанию это оператор «побитового сдвига влево», который работает на типах типа «int». Это встроенный объект. Если '<<' перегружен, то он может использоваться для других целей. – iammilind
IMO это основной приоритет и перегрузка оператора, не стоит вопрос. 'когда оператор << ссылается на оператор ввода и когда он ссылается на побитовый сдвиг влево? (C++) 'Когда типы операндов, подчиненные приоритету/ассоциативности, четко указывают язык, который перегружен для использования. –
Возможный дубликат [Перегрузка оператора] (http://stackoverflow.com/questions/4421706/operator-overloading) –