1

基本クラスと派生クラスがあります。基本クラスのコンストラクターには、いくつかの静的const変数があります。派生クラスコンストラクターで使用して基本クラス変数を作成しても大丈夫ですか?

サンプルコードは次のようになります

  //Base.hpp    
  class Base {
   public:
        Base(int value_, long sizee_);
   private:
        int value;
        int sizee;
   protected:
        static const int ONE = 1;
        static const int TWO = 2;
        static const long INT_SIZE = (long)sizeof(int);
        static const long LONG_SIZE = (long)sizeof(long);
  };

  //Base.cpp
  Base::Base(int value_,int sizee_):value(value_),sizee(sizee_) {
  }

  //Derived.hpp
  class Derived: class Base {
    public:
          Derived();
  };

  //Derived.cpp
  Derived::Derived():Base(ONE+TWO,INT_SIZE+LONG_SIZE) {
  }

ここで、ONE、TWO、INT_SIZE、LONG_SIZEは基本クラスの静的変数であり、これを使用して基本クラス自体を構築します。このアプローチは問題ありませんか?ご意見をお聞かせください。

4

1 に答える 1

1

はい、大丈夫です。Dervideオブジェクトを作成するまでに、すべてのstaticメンバーが初期化されます。つまり、static Derivedオブジェクトがない限りです。

于 2012-04-07T16:50:27.550 に答える