在赋值运算符中为链表使用复制构造函数

时间:2016-01-15 17:16:34

标签: c++ linked-list operator-overloading copy-constructor assignment-operator

我需要实现一个通用的地图。我决定使用链表实现它。我注意到复制构造函数和赋值运算符是相似的,因为它们都创建和复制链表。 所以我想知道我是否可以在赋值运算符中使用复制运算符,反之亦然。你有想法吗?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,如果您已定义了复制构造函数,则在执行复制分配时已使用它。也就是说,编译器隐式使用您的复制构造函数来定义一般情况下的复制赋值。

示例:

#include<iostream>
using namespace std;
struct copy_me {
   int member;
   copy_me() : member(0) {};
   copy_me(const copy_me &other) : member(other.member) {
      cout << "copy const called" << endl;
   };
};

int main() {
   copy_me me;
   copy_me other = me;
   return other.member;
}

输出:

copy const called

回答您的具体问题: