以下是字符串类的抽象。
class string {
public:
string(int n = 0) : buf(new char[n + 1]) { buf[0] = '\0'; }
string(const char *);
string(const string &);
~string() { delete [] buf; }
char *getBuf() const;
void setBuf(const char *);
string & operator=(const string &);
string operator+(const string &);
string operator+(const char *);
private:
char *buf;
};
string operator+(const char *, const string &);
std::ostream& operator<<(std::ostream&, const string&);
我想知道为什么这两个运算符重载函数
string operator+(const char *, const string &);
std::ostream& operator<<(std::ostream&, const string&);
不是类成员函数或友元函数吗?我知道两个参数运算符重载函数通常是友元函数(我不确定,如果您也能对此有所启发,我将不胜感激)但是我的教授也没有将它们声明为友元。以下是这些函数的定义。
string operator+(const char* s, const string& rhs) {
string temp(s);
temp = temp + rhs;
return temp;
}
std::ostream& operator<<(std::ostream& out, const string& s) {
return out << s.getBuf();
}
任何人都可以用一个小例子来解释这一点,或者指导我回答类似的问题。提前致谢。问候