3

かどうかわかりません

return *this

メンバー関数を呼び出したクラスのインスタンスを返す唯一の方法は? 私が尋ねた理由は、インストラクターが必要に応じてポインターの使用を避けるように言ったからです。これは、必要な唯一の方法が this ポインターを返すことである場合ではないかと思います。

プライベート データ メンバーの分子と分母を保持する分数クラスを使用しています。私が話しているメンバー関数は、たとえば 2 つの分数を加算するために使用されます。

Fraction C = A.plus(B);

plus メンバー関数は次のように定義されます。

Fraction& plus( const Fraction frac )

インストラクターは私たちに C = A += B を実行させたいと思っているので、それが理由だと思います。

4

7 に答える 7

0

私たちのインストラクターは、必要に応じてポインターを使用しないように私たちに言いました

実際には、ポインターではなく、ポインターを逆参照する値を返しています。だからあなたは良いはずです。

個人的には、メソッドを明示的に呼び出したり、 を介してメンバーを参照したりすることはありませんthis。つまり、私は次のことはしません。

class A {
    public:
    int x;
    int get_x()
    {
        return this->x;
    }

    int get_x_plus_5()
    {
        return this->get_x() + 5;
    }
}

ただし、 を返すことはまったく問題ありません*this

インストラクターはおそらく、(1) 関数からスタック上のオブジェクトへのポインターを返すこと (つまり、関数の終了後はオブジェクトが存在しないことを意味します)、および (2) オブジェクトをフリー ストアに割り当てることを避けるように求めています。する必要はありません。 thisこれらの問題のいずれにも悩まされません。

于 2009-06-25T00:52:07.387 に答える