+ =演算子が存在しないと不平を言ってコンパイルされない次のコードがあります。 + =演算子は、ここで私はクラスAの内部で演算子を実装する場合は、コードをコンパイルして動作します内部と外部のオーバーロードされたC++演算子の違い
template < typename _T >
class A {
public:
operator _T() const { return 42 ; }
};
template <typename _T >
A<_T> & operator += (A<_T> & l, _T r) { return l ; }
int main() {
A<int> e, f ;
e += f ;
return 0 ;
}
クラスAの外で宣言されています。これらの2つのコードの違いは
template < typename _T >
class A {
public:
operator _T() const { return 42 ; }
A<_T> & operator += (_T r) { return *this ; }
};
int main() {
A<int> e, f ;
e += f ;
return 0 ;
}
は何ですか?彼らは同等ではないと思われますか?
これはgcc 4.4.7-4でコンパイルされました。
これは問題ではありませんが、アンダースコアで始まり大文字( '_T ')で始まる名前は実装で使用するために予約されています。あなたのコードでそれらを使用しないでください。 –