Мой вопрос относится к указателям с классами и ключевым словом this.Почему мы используем ссылочный оператор дважды?
class class1 {
public:
bool isitme(class1& temp){
if(this == &temp)
return true;
else return false;
}
};
int main() {
class1 c3;
class1* c2 = &c3;
if(c3.isitme(*c2))
cout << "c3 == c2"; //it is returning that
system("pause");
}
Код выше работает, но то, что я не понимаю, почему это работает только тогда, когда bool isitme(class1& temp)
и if(this == &temp)
находятся в одной и той же функции isitme()
.
Я имею в виду, что мы уже читали блок памяти class1& temp
temp в параметрах класса и должны иметь возможность сравнить этот блок памяти с ключевым словом this
. Почему функция действует только тогда, когда я дважды получаю ссылку (this == &temp
)?
Благодаря
Так, если взять ссылку на ссылку, он преобразуется в указатель? – zurfyx
@Rov Вы не принимаете ссылку на ссылку. Вы принимаете адрес объекта, переданного по ссылке. Temp не является ссылкой, temp является объектом, переданным по ссылке. – Etherealone
О, я вижу, спасибо. Последний вопрос, зачем нам передавать его по ссылке? – zurfyx