C++オペレータのオーバーロードの方法
C++ の演算子のオーバーロード機能は、特殊なメンバー関数を定義することで実現されています。オーバーロードされる演算子は演算子関数と呼ばれ、特別な命名規則と構文を持っています。
通常、演算子関数は、関数がクラスのプライベートメンバにアクセスする必要があるため、クラスメンバ関数として定義されています。しかし、一部の演算子はグローバル関数としてオーバーロードできます。
演算子オーバーロード関数の一般記法:
返回类型 operator 运算符(参数列表) {
// 函数实现
}
ただし、オペレータは演算子(+、-、*、/など)を指定するために使用するキーワードです。パラメータリストは、オペレータ関数の引数で、1 つまたは複数の引数を含めることができます。
演算子オーバーロード関数は、演算子やオペランドの型によって異なる戻り値を持つことができます。たとえば、+ 演算子を加算するためにオーバーロードして、加算された結果オブジェクトを返します。
以下に、複素数の 2 つのオブジェクトを加算するための、+ 演算子のオーバーロードの方法の例を示します。
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i) {}
Complex operator+(const Complex& c) {
Complex result;
result.real = real + c.real;
result.imaginary = imaginary + c.imaginary;
return result;
}
};
上記の例では、Complexクラスは + 演算子をオーバーロードし、operator+ というメンバ関数を定義しています。この関数は Complex 型のパラメータを受け取り、実部と虚部がそれぞれ 2 つのオペランドの実部と虚部の和である新しい Complex オブジェクトを返します。
オーバーロード演算子を使用すると、クラスのインスタンスが組み込み型のような演算を行えるため、コードの可読性と柔軟性が増加します。