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
推荐的书中发现了错误答案 0 :(得分:3)
是。看起来像是一个错字。您是否从附带的CD-ROM中复制了代码?
答案 1 :(得分:1)
听起来像是一个错字 - String
肯定是构造函数,~String
是析构函数。
答案 2 :(得分:0)
你是对的 - 这看起来像是一个错字,虽然我找不到那本书的勘误表。