Karthik TとPubbyによる過負荷に関する良い回答operator+()
に、1点付け加えたいと思います。
通常、オーバーロードされたコードMyClass
内のプライベートメンバーにアクセスする必要があります(おそらく削除された例のように)。その場合は、として宣言する必要があります。は演算子の左側にあるため、のメンバーとして持つことはできません。以下のサンプルコードを参照してください。operator+()
return "bar";
friend
operator+()
MyClass
MyClass
+
#include <string>
#include <iostream>
using namespace std;
struct MyClass {
public:
MyClass() : bar("bar") {}
friend string operator+(string& str, MyClass& x);
private:
string bar;
};
string operator+(string& str, MyClass& x) {
return str + x.bar;
}
int main( int argc, char* argv[] )
{
MyClass x;
string foo("foo");
std::cout << foo + x << std::endl;
return 0;
}