c++ - 在 C++ 中重载运算符 =

标签 c++

在下面的代码中,我不明白“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 with a?

因为this代表一个指向Book的指针,而a代表一个对Book的常量引用。为了比较两者,它们的间接级别必须相同(都必须是指针)。这样做是为了使有效的自分配

b1 = b1;

不会造成问题。

关于c++ - 在 C++ 中重载运算符 =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094276/

相关文章:

c++ - NPP 和 CUDA 错误检查

c++ - 尝试将 Struct 指针传递给类时出错

c++ - 复制回调?

c++ - 使用 deque 实例化 priority_queue 无法编译 - 使用 vector 则可以。这是为什么?

用于保存无法在构造函数中初始化的成员的 C++ 类型

c++ - 我什么时候应该按值返回,而不是返回一个唯一的指针

c++ - 函数参数 : Pointer to array of objects

c++ - 检索用户路径环境变量

c++ - 在 Hangman 游戏中检查字母与任意大小的单词

c++ - QT设计器背景图片问题