簡體   English   中英

運算符=覆蓋C ++

[英]Operator = override c++

我試圖覆蓋我的=運算符。 我有2個指針父,它們需要是指針。

p1 *和p2 *

這是我父母內部的替代

Parent Parent::operator=(const Parent& otherParent) const
    {
        return Parent(otherParent);
    }

這是我的復制構造函數:

Parent::Parent(const Parent& otherParent) : myChild("") {
    this->name = otherParent.GetParentName();
    myChild = Child(otherParent.GetChild());
}

這是我的主要內容:

#include <iostream>
#include "Parent.h"
#include "Child.h"

using namespace std;

int main() {

    Child c1 = Child("rupert");
    Parent* p1 = new Parent("Parent1", c1);
    cout << *p1 << endl;

    Child c2 = Child("bob");
    Parent* p3 = new Parent("Parent3", c2);
    cout << *p3 << endl;

    *p3 = *p1; 
    cout << *p3 << endl;

    cin.get();
    return 0;

}

為什么要打印出來:

父母姓名:Parent1子女名字:rupert

父母姓名:Parent3子女名字:bob

父母姓名:Parent3子女名字:bob

第三張印刷應與第一張相同。

認為賦值語句*p3 = *p1像這樣工作:

p3->operator=(*p1);

那是有效的語法。 如果你看它這樣,你應該能夠看到賦值運算符需要修改this ,如果它實際上是打算做任何分配。 現在,您創建並返回一個立即銷毀的臨時文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM