最終更新日時(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) = (-1,-1)
(1,2) - 3 = (-2,2)
5 - (2,3) = (3,-3)

関連項目

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

参照