在下面的代码中,我不明白“this”是什么(不是关键字,而是它指向的内容)。 “this”是指向当前对象的引用还是指针?
并且在检查 a=a assign if(this!=&a)
时,为什么将“this”与 &a 进行比较,而不是与 a 进行比较?
类 Book 有私有(private)成员 *num_pages
指向书中的页数。
Book &Book::operator=(const Book& a){
if(this!=&a){
delete num_pages;
num_pages = new int;
*num_pages = *a.num_pages;
}
return *this;
}
最佳答案
在上面的示例中,this
是指向赋值运算符左侧对象的指针。例如,如果您编写以下代码
Book b1, b2;
b1 = b2;
那么在你的运算符里面=
this
就是b1
的地址,a
就是b2
。
why
this
is compared with&a
, and not witha
?
因为this
代表一个指向Book
的指针,而a
代表一个对Book
的常量引用。为了比较两者,它们的间接级别必须相同(都必须是指针)。这样做是为了使有效的自分配
b1 = b1;
不会造成问题。
关于c++ - 在 C++ 中重载运算符 =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094276/