Является ли это объявление деструктором опечаткой в ​​C ++ Primer (Стэнли Липпман)? - PullRequest
2 голосов
/ 28 марта 2011

In - C ++ Primer, третье издание Стэнли Б. Липпман, Хосе Лахуа

В нем говорится:

15.1 Перегрузка оператора

Как мы видели в примерах в предыдущих главах, перегрузка операторов позволяет программисту определять версии предопределенных операторов (как обсуждалось в главе 4) для операндов типа класса. Например, класс String, представленный в разделе 3.15, определяет много перегруженных операторов. Вот определение нашего класса String:

#include <iostream>

class String;
istream& operator>>( istream &, String & );
ostream& operator<<( ostream &, const String & );

class String {
public:
   / overloaded set of constructors
   // provide automatic initialization
   String( const char * = 0 );
   String( const String & );

   // destructor: automatic deinitialization     **------> NOTE**
   String();                                   //**------> NOTE**

// overloaded set of assignment operators
   String& operator=( const String & );
   String& operator=( const char * );

   // overloaded subscript operator
   char& operator[]( int ) const;

   // overloaded set of equality operators
   // str1 == str2;
   bool operator==( const char * ) const;
   bool operator==( const String & ) const;

   // member access functions
   int   size()  { return _size;   }
   char* c_str() { return _string; }
private:
   int   _size;
   char *_string;
};

Как может String() быть деструктором? Разве деструктор не должен появляться с префиксом тильды, например ~String()?

Думаю, я нашел ошибки в книге, рекомендованной SO

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Да. Похоже на опечатку для меня. Вы скопировали код с сопровождающего компакт-диска или что-то еще?

1 голос
/ 28 марта 2011

Звучит как опечатка - String определенно будет конструктором, а ~String деструктором.

0 голосов
/ 28 марта 2011

Вы правы - это выглядит как опечатка для меня, хотя я не смог найти список ошибок для этой книги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...