以下は、文字列クラスの抽象化です。
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&);
これら2つの演算子が関数をオーバーロードした理由を知りたい
string operator+(const char *, const string &);
std::ostream& operator<<(std::ostream&, const string&);
クラスメンバー関数またはフレンド関数ではありませんか? 2 パラメーター演算子のオーバーロードされた関数は一般的にフレンド関数であることは知っていますが (よくわかりませんが、これについても教えていただければ幸いです)、私の教授もそれらをフレンドとして宣言しませんでした。以下は、これらの関数の定義です。
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();
}
誰かがこれを小さな例で説明したり、同様の質問に誘導したりできますか? 前もって感謝します。よろしく