如何为具有自引用指针的类实现复制构造函数/赋值运算符
How to implement a copy constructor / assignment operator for a class that has a self-referential pointer?
我不太确定是否可以实现复制构造函数/赋值运算符,因此如果我希望这个类等于另一个包实例,它会用该实例替换自己。
我已经尝试了通用赋值运算符实现(检查自引用等(。
template <typename T>
class bags {
public:
bags(const bag<T>& b) {
}
bags<T>& operator=(bags<T> const &b) {
}
private:
bags<T> * self;
}
template <typename T>
class apples : public bags<T> {
public:
void test () {
self = new bags<T>; // this will invoke assignment operator
}
private:
bags<T> * self;
}
袋子是苹果(派生(的基类。我希望能够让袋子装自己和苹果。
无需
使用
bags<T> * self;
总是提供语言this
.如果出于某种原因必须使用 self
,请使其成为成员函数。
bags<T> const* self() const
{
return this;
}
bags<T>* self()
{
return this;
}
另一种选择是使用函数局部变量。
bags<T> const* self = this; // In const member functions.
bags<T>* self = this; // In non-const member functions.
相关文章:
- 为共享 ptr 向量实现复制 c'tor?
- 使用共享指针实现复制 c'tor?
- 如何在双向链表上实现复制赋值?
- 实现不可复制的C++类
- 在C++中正确实现复制构造函数
- 如何在模板容器类中实现复制构造函数和赋值运算符
- 在单个链接列表中实现复制构造函数C
- 如何为具有自引用指针的类实现复制构造函数/赋值运算符
- 为什么完美的转发(全部捕获)不能实现复制分配?
- 在 C++11 中实现复制和交换习语的更好方法
- 如何为派生类实现复制构造函数
- 复制/移动操作符是否可以安全地用于实现复制/移动分配操作符
- C++实现复制构造函数
- 为什么使用 swap 来实现复制分配
- 使用桥接模式 c++ 实现复制构造函数
- PFArrayD.cpp实现复制构造函数
- 为简单向量实现复制构造函数
- 实现复制构造函数
- 矢量实现复制构造函数错误
- 根据move构造函数实现复制赋值操作符