-5

次の例を考えてみましょう。

Aclass.h

class Aclass()
{
private: 
   int something;
   double nothing;
};

Aclass.cpp

#include "Aclass.h"

Aclass::Aclass (int x) {
    something = x;
    nothing = y;
}
//Write some functions to manipulate x and y.

yでは、コンストラクターで初期化をスキップした場合の違いは何ですか? 欠点は何ですか? また、コードの残りの部分にどのような影響がありますか? これは良いコーディング方法ですか?私が知っているのは、コンストラクターは、 と が初期化されているか、両方が初期化されていなくても (デフォルトのコンストラクター)、コンストラクターを使用して汎用オブジェクトを作成する場合でも、オブジェクトを作成するということxですy

4

2 に答える 2

4

変数を初期化する理由がない場合は、この変数は必要ありません
=> 完全に削除します。真剣に、初期化されていない変数は...に適していますか?何もない。(初期化のみ)。

後で使用する前に初期化する予定がある場合:
クラスメソッドが呼び出される頻度と順序に関係なく、最初に読み取られる前に値を取得することを保証できますか? その場合、それは「間違っている」わけではありませんが、それを面倒にチェックする (そして複雑なのでバグの危険を冒す) 代わりに、コンストラクターで値を与える方がはるかに簡単です。

いいえ、意図的に複雑にすることは、コーディングの良い方法ではありません。

于 2015-07-02T11:57:26.440 に答える
0

変数を初期化しないままにしておくと、ガベージ値を取得できます。

結果 =未定義の動作。そして、それには長所がありません。

于 2015-07-02T14:37:40.683 に答える