C++ 检查传递给成员函数的参数是否为对象本身
不应该是:C++ 检查传递给成员函数的参数是否为对象本身,c++,class,this,C++,Class,This,不应该是: if (¶m == this) 因为“this”是指针,“param”也是指针,所以如果我们说: if (param == this) 这将是指针(¶m)和指针(this)的地址之间的比较,这不是我们要寻找的;检查传递给成员函数的参数是否为对象本身?引用类型与指针类型的语义不同。未指明编译器如何实现引用。引用类型没有地址。当您获取引用类型的地址时,结果将始终是它绑定到的对象的地址 因此,下面的代码测试原始对象的地址param与this绑定 if (&
if (¶m == this)
因为“this”是指针,“param”也是指针,所以如果我们说:
if (param == this)
这将是指针(¶m)和指针(this)的地址之间的比较,这不是我们要寻找的;检查传递给成员函数的参数是否为对象本身?引用类型与指针类型的语义不同。未指明编译器如何实现引用。引用类型没有地址。当您获取引用类型的地址时,结果将始终是它绑定到的对象的地址 因此,下面的代码测试原始对象的地址
param
与this
绑定
if (¶m == this)
对于指针,只需测试指针是否相等
bool Dummy::isitme (Dummy& param)
{
if (¶m == this) return true;
else return false;
}
是什么让你认为
param
是指针?不是*
。可以简化代码的可能副本:返回¶m==此代码>。
bool Dummy::isitme (Dummy& param)
{
if (¶m == this) return true;
else return false;
}
bool Dummy::isitme (Dummy* param)
{
if (param == this) return true;
else return false;
}