complex<T>& operator+=(const T& rhs); // (1) C++03
constexpr complex<T>& operator+=(const T& rhs); // (1) C++20
template <class X>
complex<T>& operator+=(const complex<X>& rhs); // (2) C++03
template <class X>
constexpr complex<T>& operator+=(const complex<X>& rhs); // (2) C++20
概要
複素数の加算を行う
効果
- (1) スカラー値
rhs
を*this
の実部に加える。*this
の虚部は変わらない。 - (2) 複素数値
rhs
を*this
に加える。
戻り値
*this
備考
- (1) の形式の場合、引数の型は
const T&
なので、引数(演算子の右オペランド)の型がT
ではない場合には暗黙の型変換が適用される。
例えば、T
が規格でサポートが明示されているfloat
、double
、long double
の場合、各種の暗黙の標準変換が(縮小変換も含めて)効くため、complex<float>
にlong double
を加えるといったこともできる。 - (2) の形式の場合、
rhs
の型はクラステンプレートなので、引数そのものに暗黙の型変換が適用されることはない。
しかし、(規格書内に明確な規定は無いが)*this
にrhs
を加える際には各コンポーネント間の演算となるため、やはり暗黙の型変換が適用されると考えて良いと思われる。
例
#include <iostream>
#include <complex>
int main()
{
std::complex<double> c(1.0, 2.0);
std::complex<long double> d(2.0, 3.0);
std::cout << "c = " << c << ", d = " << d << std::endl;
c += d;
std::cout << "c = " << c << ", d = " << d << std::endl;
c += 7;
std::cout << "c = " << c << ", d = " << d << std::endl;
}
出力
c = (1,2), d = (2,3)
c = (3,5), d = (2,3)
c = (10,5), d = (2,3)
関連項目
名前 | 説明 |
---|---|
operator= |
代入する。 |
operator-= |
複素数の減算を行う。 |
operator*= |
複素数の乗算を行う。 |
operator/= |
複素数の除算を行う。 |
operator+ |
複素数の加算を行う。(非メンバ関数) |
operator- |
複素数の減算を行う。(非メンバ関数) |
operator* |
複素数の乗算を行う。(非メンバ関数) |
operator/ |
複素数の除算を行う。(非メンバ関数) |