Существует ли лучший способ скрыть backBarButtonItem, чем это?

При условии, что конструктор копирования и деструктор для BST работают правильно (и что конструктор копирования не использует оператор присваивания), оператор присваивания BST можно легко написать с помощью идиома копирования / замены [ 117]:

#include 
//...
BST& BST::operator=(const BST &rhs) 
{
    if ( &rhs != this )  // for optimization purposes, check for self assignment
    {
        BST temp(rhs);  // copy the rhs (uses copy constructor)
        std::swap(temp.root, root);  // swap out the members (root with temp.root)
    } // temp now dies off with the old data (uses destructor)
    return *this;   
} 

Обратите внимание, что все, что мы сделали, это создали временный (именно поэтому конструктор копирования должен работать должным образом). Затем поменяйте местами this членов с членами временного. Как только это сделано, когда temp уничтожено, оно забирает старые данные (именно поэтому деструктор должен работать должным образом).

Если есть больше членов, то вам также нужно поменять их местами (я предполагаю, что единственная переменная-член в BST - это root).

9
задан Steve Weller 27 March 2009 в 16:27
поделиться