У меня есть трудности в понимании последовательности вызовов в коде ниже. Я ожидал увидеть результат ниже
A1B2
Хотя я вижу, что результат, который я получаю, -
BA12
Я думал, что звонок std::cout<< b->fooA() << b->fooB() << std::endl
был эквивалентен звонку
std::cout.operator<<( b->fooA() ).operator<< ( b->fooB() )
но я вижу, что это не так. Можете ли вы помочь мне лучше понять, как это работает и каковы отношения с глобальным operator<<
? Это последний раз вызывается в этой последовательности?
#include <iostream>
struct cbase{
int fooA(){
std::cout<<"A";
return 1;
}
int fooB(){
std::cout <<"B";
return 2;
}
};
void printcbase(cbase* b ){
std::cout << b->fooA() << b->fooB() << std::endl;
}
int main(){
cbase b;
printcbase( &b );
}