С++ для начинающих



         

Копирующий конструктор - часть 2


4.      Если в классе нет конструктора по умолчанию, то компилятор генерирует его автоматически и инициализирует каждый член значением по умолчанию для соответствующего типа.

Упражнение 14.2

Предложите один или несколько конструкторов для данного множества членов. Объясните свой выбор:

class NoName {

public:

   // здесь должны быть конструкторы

   // ...

protected:

   char   *pstring;

   int    ival;

   double dval;

};

Упражнение 14.3

Выберите одну из следующих абстракций (или предложите свою собственную). Решите, какие данные (задаваемые пользователем) подходят для представляющего эту абстракцию класса. Напишите соответствующий набор конструкторов. Объясните свое решение.

  • Книга
  • Дата
  • Служащий
  • Транспортное средство
  • Объект
  • Дерево
  • Упражнение 14.4

    Пользуясь приведенным определением класса:

    class Account {

    public:

       Account();

       explicit Account( const char*, double=0.0 );

       // ...

    };

    объясните, что происходит в результате следующих определений:

    (a) Account acct;

    (b) Account acct2 = acct;

    (c) Account acct3 = "Rena Stern";

    (d) Account acct4( "Anna Engel", 400.00 );

    (e) Account acct5 = Account( acct3 );

    Упражнение 14.5

    Параметр копирующего конструктора может и не быть константным, но обязан быть ссылкой. Почему ошибочна такая инструкция:

    Account::Account( const Account rhs );




    Содержание  Назад  Вперед