在赋值重载期间按引用返回

Returning by reference during assignment overloading

提问人:happy 提问时间:6/21/2023 最后编辑:happy 更新时间:6/21/2023 访问量:69

问:

下面的函数适用于返回类型 Class、Class& 和 void。那么,它们之间有什么区别呢?

//deep copies one object into another
Club& Club::operator= (Club& obj) {
    this->members_ = std::unique_ptr <Member[]> (new (std::nothrow) Member[obj.num_members_]);
    if (members_ != nullptr) {
        this->num_members_ = obj.num_members_;

        for (int i = 0; i < obj.num_members_; i++) {
            this->members_[i] = obj.members_[i];
        }
    }

    else {
        std::cout << "Memory could not be allocated.\n";
        this->num_members_ = 0;
    }

    return *this;
}

我的教授告诉我要按价值返回,但我不明白为什么我们需要返回任何东西?

在主文件中,

club200 = club200a;

由于我们直接对它所指向的变量进行更改,为什么我们需要返回地址或值?我们不会将返回的值存储在任何位置。

另外,我知道引用用于链接运算符,但返回值到底发生了什么?

C++ 重载 赋值运算符

评论


答: 暂无答案