我正在尝试在 C++ 中学习“三巨头”。我设法为“三巨头”做了非常简单的程序。但我不确定如何使用对象指针。以下是我的第一次尝试。
我在写这篇文章的时候有一个疑问...
问题
- 这是实现默认构造函数的正确方法吗?我不确定我是否需要拥有它。但是我在另一个关于带有指针的复制构造函数的线程中发现的是,在复制构造函数中的地址之前,我需要为该指针分配空间。
- 如何在复制构造函数中分配指针变量?我在 Copy Constructor 中写的方式可能是错误的。
- 我是否需要为复制构造函数和 operator= 实现相同的代码(除了 return )?
我说我需要删除析构函数中的指针是否正确?
class TreeNode { public: TreeNode(); TreeNode(const TreeNode& node); TreeNode& operator= (const TreeNode& node); ~TreeNode(); private: string data; TreeNode* left; TreeNode* right; friend class MyAnotherClass; };
执行
TreeNode::TreeNode(){
data = "";
}
TreeNode::TreeNode(const TreeNode& node){
data = node.data;
left = new TreeNode();
right = new TreeNode();
left = node.left;
right = node.right;
}
TreeNode& TreeNode::operator= (const TreeNode& node){
data = node.data;
left = node.left;
right = node.right;
return *this;
}
TreeNode::~TreeNode(){
delete left;
delete right;
}
提前致谢。