Недавно я наткнулся на следующую часть кода. Я не знаю, если это имеет смысл, я просто пытаюсь понять:std :: cin непосредственно к функции
#include <iostream>
class foo{
private:
int memeber;
public:
int &method(){ return memeber; }
};
int main(){
foo bar;
std::cin >> bar.method();
}
Я никогда не видел подобного раньше. Я удивлен, что он даже компилируется. Как вы можете напрямую подключиться к адресу функции? Может ли кто-нибудь уточнить, что он делает и может ли он быть использован для чего-либо?
'bar.method()' не является адресом функции, а ссылкой, возвращаемой функцией. – MikeCAT
О, так это значит, что std :: cin собирается писать непосредственно частному члену этого класса? Это хорошая или плохая практика? –
@ user3125731 Это, вероятно, более плохая практика, позволяющая получить прямой доступ к любым частным членам класса. Но, возможно, могут быть допустимые варианты использования. –