31

私はまだC++を学び、それを理解しようとしています。私はいくつかのコードを調べていて、次のことを確認しました。

point3(float X, float Y, float Z) :
x(X), y(Y), z(Z)  // <----- what is this used for
{
}

コンストラクターのパラメーターの横にある「x(X)、y(Y)、z(Z)」の意味は何ですか?

4

3 に答える 3

33

これは、point3クラスのメンバーのコンストラクターを呼び出す方法です。x、y、およびzが浮動小数点数である場合、これはこれを記述するためのより効率的な方法です。

point3( float X, float Y, float Z):
{
   x = X;
   y = Y;
   z = Z;
}

ただし、x、y、zがクラスの場合、これがパラメーターをコンストラクターに渡す唯一の方法です。

于 2010-02-28T03:44:09.010 に答える
5

In your example point3 is the constructor of the class with the same name (point3), and the stuff to the right of the colon : before the opening bracket { is the initialization list, which in turn constructs (i.e. initializes) point3's member variables (and can also be used to pass arguments to constructors in the base class[es], if any.)

于 2010-02-28T03:37:55.193 に答える
0

他の人が指摘しているように、メンバーの初期化。ただし、次のことを知っておくことがより重要です。

引数がfloat型またはその他の組み込み型の場合、C ++では(コンストラクターの本体で)代入ではなくメンバーの初期化を使用する方が慣用的であることを除いて、明確な利点はありません。

明らかな利点は、引数がユーザー定義クラスの場合、このメンバーの初期化により、(コンストラクターの本体で)割り当てを使用して行われた場合、デフォルトのコンストラクターではなく、コンストラクターをコピーする呼び出しが発生することです。

于 2010-02-28T03:49:04.770 に答える