[英]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.