Operator =覆盖c ++

时间:2017-01-11 04:20:58

标签: 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

第三次印刷应与第一次印刷相同。

1 个答案:

答案 0 :(得分:2)

将赋值语句 private void comboBoxRoles_SelectedValueChanged(object sender, EventArgs e) { string RoldId = comboBoxRoles.SelectedValue.ToString(); //RoleId = 35 for example } 视为这样工作:

*p3 = *p1

这是有效的语法。如果您这样看,您应该能够看到赋值运算符需要修改p3->operator=(*p1); ,如果它实际上要进行任何赋值。现在你创建并返回一个立即被破坏的临时文件。