Обычный способ передать переменную по ссылке в С++ (также C) выглядит следующим образом:
void _someFunction(dataType *name){ // dataType e.g int,char,float etc.
/****
definition
*/
}
int main(){
dataType v;
_somefunction(&v); //address of variable v being passed
return 0;
}
Но, к моему удивлению, я заметил, что при передаче объекта по ссылке имя объекта само служит цели (нет &
), а во время объявления/определения функции no *
перед аргументом требуется символ.
В следующем примере должно быть ясно:
// this
#include <iostream>
using namespace std;
class CDummy {
public:
int isitme (CDummy& param); //why not (CDummy* param);
};
int CDummy::isitme (CDummy& param)
{
if (¶m == this) return true;
else return false;
}
int main () {
CDummy a;
CDummy* b = &a;
if ( b->isitme(a) ) //why not isitme(&a)
cout << "yes, &a is b";
return 0;
}
У меня проблема с пониманием, почему это специальное обращение с классом. Даже такие структуры, которые почти как класс, не используются таким образом. Имя объекта рассматривается как адрес, как в случае массивов?