在 C++(也是 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;
}
但令我惊讶的是,我注意到当通过引用传递对象时,对象本身的名称服务于目的(不需要&
符号),并且在函数的声明/定义期间*
,参数之前不需要符号。下面的例子应该清楚地说明:
// 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;
}
我很难理解为什么要对 class 进行这种特殊处理。即使是几乎像一个类的结构也不会以这种方式使用。对象名称是否像数组一样被视为地址?