这个析构函数声明在C ++ Primer(Stanley Lippman)中是一个错字吗?

时间:2011-03-28 01:42:40

标签: c++ visual-c++ constructor destructor

In-C ++ Primer,第三版作者:Stanley    B. Lippman,JoséeLajoie

它说:

15.1运算符重载

正如我们在前面章节中的示例中所看到的,运算符重载允许程序员为类类型的操作数定义预定义运算符的版本(如第4章所述)。例如,3.15节中介绍的String类定义了许多重载运算符。以下是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()如何成为析构函数?是不是一个析构函数应该以Tilde为前缀出现,比如~String()

猜猜,我在SO

推荐的书中发现了错误

3 个答案:

答案 0 :(得分:3)

是。看起来像是一个错字。您是否从附带的CD-ROM中复制了代码?

答案 1 :(得分:1)

听起来像是一个错字 - String肯定是构造函数,~String是析构函数。

答案 2 :(得分:0)

你是对的 - 这看起来像是一个错字,虽然我找不到那本书的勘误表。