「The C++ Programming Language」の書籍では、著者が次の例といくつかの主張を挙げています。ラージオブジェクトの演算子オーバーロードのための参照とポインタの使用
class Matrix {
double m[4][4];
public:
Matrix();
friend Matrix operator+(const Matrix&, const Matrix&)
};
Matrix operator+(const Matrix& arg1, const Matrix& arg2)
{
Matrix sum;
for (int i=0; i<4; i++)
sum.m[i][j ]=arg1.m[i][j]+arg2.m[i][j];
return sum;
}
本は
参照が過度にコピーすることなく、大きなオブジェクトのための通常の算術演算子を含む式の使用を許可することを主張しています。ポインタに適用される演算子の意味を再定義することはできないため、ポインタは使用できません。
上記の「過剰コピー」とは何ですか?そして、「ポインタは、ポインタに適用された演算子の意味を再定義することができないため使用できません」という文については、まったく失われています。説明ありがとう。
実際には、言語には2つのポインタを追加する組み込み演算子がありません。プログラマが定義することもできません。 – anatolyg
いいえ、2つのポインタを減算するような意味を持つ演算子しかありません。 –