Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查传递给成员函数的参数是否为对象本身_C++_Class_This - Fatal编程技术网

C++ 检查传递给成员函数的参数是否为对象本身

C++ 检查传递给成员函数的参数是否为对象本身,c++,class,this,C++,Class,This,不应该是: if (&param == this) 因为“this”是指针,“param”也是指针,所以如果我们说: if (param == this) 这将是指针(¶m)和指针(this)的地址之间的比较,这不是我们要寻找的;检查传递给成员函数的参数是否为对象本身?引用类型与指针类型的语义不同。未指明编译器如何实现引用。引用类型没有地址。当您获取引用类型的地址时,结果将始终是它绑定到的对象的地址 因此,下面的代码测试原始对象的地址param与this绑定 if (&

不应该是:

if (&param == this)
因为“this”是指针,“param”也是指针,所以如果我们说:

if (param == this)

这将是指针(¶m)和指针(this)的地址之间的比较,这不是我们要寻找的;检查传递给成员函数的参数是否为对象本身?

引用类型与指针类型的语义不同。未指明编译器如何实现引用。引用类型没有地址。当您获取引用类型的地址时,结果将始终是它绑定到的对象的地址

因此,下面的代码测试原始对象的地址
param
this
绑定

if (&param == this)
对于指针,只需测试指针是否相等

bool Dummy::isitme (Dummy& param)
{
  if (&param == this) return true;
  else return false;
}

是什么让你认为
param
是指针?不是
*
。可以简化代码的可能副本:
返回¶m==此
bool Dummy::isitme (Dummy& param)
{
  if (&param == this) return true;
  else return false;
}
bool Dummy::isitme (Dummy* param)
{
  if (param == this) return true;
  else return false;
}