【问题标题】:Is this destructor declaration a typo in C++ Primer (Stanley Lippman)?这个析构函数声明是 C++ Primer (Stanley Lippman) 中的错字吗?
【发布时间】:2011-07-24 03:45:14
【问题描述】:

在 - C++ Primer,第三版,Stanley B. Lippman, Josée Lajoie

上面写着:

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() 怎么可能是析构函数?析构函数不应该以波浪号为前缀出现吗,例如~String()

猜猜,我在SO推荐的书中发现了错误

【问题讨论】:

  • @Downvoter::否决票有什么愚蠢的理由吗?对于从 SO 引用的书中学习 C++ 的人来说,这是一个有效的问题。

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


【解决方案1】:

是的。对我来说似乎是一个错字。您是否从随附的 cd-rom 或其他东西中复制了代码?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你说得对——我觉得这是一个错字,虽然我找不到那本书的勘误表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        相关资源
        最近更新 更多