C++:如何创建具有指针的数组的复制构造函数?

C++ : How to create a copy constructor of array that has a pointer?

提问人:FancyPants General 提问时间:5/14/2022 更新时间:5/14/2022 访问量:187

问:

我有

template <class T>
class arrList: public linearList<T> {
public: 
      arrList() {}
      arrList(const arrList<T>& List);
      ~arrList() {delete[] element; }
protected:
      void indexCheck(int indx) const;
      T* element;
      int arrLength;
      int listSize;
};

复制构造函数是

template<class T>
inline arrList<T>::arrList(const arrList<T>& List) {
       element = List.element;
       arrLength = List.arrLength;
       listSize = List.listSize;
}

但我不确定这对 T* 元素是否正确,以及我是否也必须在复制构造函数中插入 void 函数。 我是新手,我对此了解不多,因此任何形式的帮助都将不胜感激。

C++ 数组列表 模板 copy-constructor

评论

0赞 273K 5/14/2022
您实现的内容与 相同。arrList(const arrList<T>& List) = default;
1赞 NathanOliver 5/14/2022
这应该对您有所帮助: stackoverflow.com/questions/4172722/what-is-the-rule-of-three
0赞 BoP 5/14/2022
这回答了你的问题吗?深拷贝和浅拷贝有什么区别?
0赞 Drew Dormann 5/14/2022
您设计的复制构造函数将创建多个对象,每个对象在销毁时都会尝试指向同一指针。这不会顺利。deleteelement
0赞 Goswin von Brederlow 5/14/2022
班级部分的副本在哪里?你可能应该有一个移动构造函数而不是复制构造函数。对于像您这样的复制构造函数,您需要 .linearList<T>std::shared_ptr<T> element;

答: 暂无答案