Конструктор копирования C ++ + объект указателя

Я пытаюсь выучить "большую тройку" на C ++ .. Мне удалось написать очень простую программу для "большой тройки" .. но я не уверен, как использовать объект указатель .. Это моя первая попытка.

У меня возникли сомнения, когда я писал это ...

Вопросы

  1. Это правильный способ реализации конструктора по умолчанию? Я не уверен, нужно мне это или нет. Но в другом потоке о конструкторе копирования с указателем я обнаружил, что мне нужно выделить место для этого указателя перед копированием адреса в конструкторе копирования.
  2. Как назначить переменную-указатель в конструкторе копирования? То, как я написал в Copy Constructor, может быть неправильным.
  3. Нужно ли мне реализовать один и тот же код (кроме return) для конструктора копирования и оператора =?
  4. Правильно ли я говорю, что мне нужно удалить указатель в деструкторе?

     класс TreeNode
    {
    общественность: 
     TreeNode (); 
     TreeNode (const TreeNode & узел);
     TreeNode & operator = (const TreeNode & node);
     ~ TreeNode ();
    частный:
     строковые данные;
     TreeNode * left;
     TreeNode * справа;
     класс друга 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;
}

Заранее спасибо.

8
задан Narek Atayan 11 August 2016 в 11:04
поделиться