c++関数の戻り値タイプ---参照&非参照

590 ワード

一、非参照タイプを返す
  • 戻りタイプが参照でない場合、戻り値は関数呼び出し時に一時オブジェクト
  • に与えられる.
  • 関数が非参照タイプを返す場合、その戻り値はローカルオブジェクトであっても解式の結果であってもよい
  • である.
     
    二、参照タイプを返す
  • が参照タイプを返す場合、戻り値はコピーされず、オブジェクト自体
  • を返す.
  • は、ローカルオブジェクトへの参照を返すことができず、ローカルオブジェクトへのポインタ
  • を返すことができない.
  • が参照を返す場合、パラメータには参照方式またはポインタ方式で存在することが要求され、返される必要があるパラメータ
  • が含まれる.
    const integer& operator+(const operator& a)
    {
    return a;
    }
    const integer operator1(const operator& a)
    {
    return integer(-a.i);
    }
    
    

    リロード+の場合、返されるオブジェクトはパラメータaなので参照を返すことができ、リロード-の場合、関数内にローカルオブジェクトが作成され、戻り値はローカルオブジェクトの参照を返すことができません.