最終更新日時(UTC):
が更新

履歴 編集

function template
<complex>

std::operator+

namespace std {
  template <class T>
  complex<T>
    operator+(const complex<T>& lhs, const complex<T>& rhs); // (1) C++03

  template <class T>
  constexpr complex<T>
    operator+(const complex<T>& lhs, const complex<T>& rhs); // (1) C++20

  template <class T>
  complex<T>
    operator+(const complex<T>& lhs, const T& rhs);          // (2) C++03

  template <class T>
  constexpr complex<T>
    operator+(const complex<T>& lhs, const T& rhs);          // (2) C++20

  template <class T>
  complex<T>
    operator+(const T& lhs, const complex<T>& rhs);          // (3) C++03

  template <class T>
  constexpr complex<T>
    operator+(const T& lhs, const complex<T>& rhs);          // (3) C++20
}

概要

複素数の加算を行う

戻り値

complex<T>(lhs) += rhs
lhs を基に新たな complex<T> 型のオブジェクトを作成し、そのオブジェクトに operator+= を用いて rhs を加えた上で、当該オブジェクトを返す)

備考

lhsrhs の両辺に現れる型 T は(残念ながら)同じ型でなければならない。(complex<double>complex<float> の加算や、complex<double>float の加算などを行うことはできない。)
特に、これらの演算子は関数テンプレートであるため、operator+= の場合と異なり、暗黙の型変換は行われないことに注意。

#include <iostream>
#include <complex>

int main()
{
  std::complex<float> c(1.0, 2.0);
  std::complex<float> d(2.0, 3.0);
  std::cout << c << " + " << d << " = " << (c + d) << std::endl;
  std::cout << c << " + " << 3.0F << " = " << (c + 3.0F) << std::endl;
  std::cout << 5.0F << " + " << d << " = " << (5.0F + d) << std::endl;
}

出力

(1,2) + (2,3) = (3,5)
(1,2) + 3 = (4,2)
5 + (2,3) = (7,3)

関連項目

名前 説明
operator= 代入する。
operator+= 複素数の加算を行う。
operator-= 複素数の減算を行う。
operator*= 複素数の乗算を行う。
operator/= 複素数の除算を行う。
operator- 複素数の減算を行う。(非メンバ関数)
operator* 複素数の乗算を行う。(非メンバ関数)
operator/ 複素数の除算を行う。(非メンバ関数)

参照