私は 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;
}
前もって感謝します。