-3

まず第一に、これに反対票を投じたい人のために、メンバー変数がクラスリファレンスに表示されておらず、ヘッダーファイルへのリンクが壊れていることに注意してください!

次のコンストラクタがあります。

    Foam::IOobject::IOobject
143 (
144  const word& name,           
145  const fileName& instance,   
146  const objectRegistry& registry,   
147  readOption ro,
148  writeOption wo,
149  bool registerObject
150 )
151 :                               
152  name_(name),                         
153  headerClassName_(typeName),
154  note_(),
155  instance_(instance),
156  local_(),
157  db_(registry),
158  rOpt_(ro),
159  wOpt_(wo),
160  registerObject_(registerObject),
161  objState_(GOOD)
162 {
163  if (objectRegistry::debug)
164  {
165  Info<< "Constructing IOobject called " << name_
166  << " of type " << headerClassName_
167  << endl;
168  }
169 }

私が読んだ限りでは、初期化子は次のように使用されています。

  • 派生クラスから基本クラス コンストラクターを呼び出す
  • クラスのメンバー変数を初期化する

参照: https://stackoverflow.com/questions/2445330/importance-of-a-singlecolon-in-c

IOobject例のコンストラクター初期化子の要素がクラスのメンバー変数ではなく、派生クラスのコンストラクターではないため、その要素が何のためにあるのかわかりません。これらの初期化要素の目的を誰か教えてもらえますか?

あいさつ

4

2 に答える 2

2

IOobject クラスには、次のメンバーが定義されています (ヘッダー ファイル)。

127  //- Name
128  word name_;
129 
130  //- Class name read from header
131  word headerClassName_;
132 
133  //- Optional note
134  string note_;
135 
136  //- Instance path component
137  fileName instance_;
138 
139  //- Local path component
140  fileName local_;
141 
142  //- objectRegistry reference
143  const objectRegistry& db_;
144 
145  //- Read option
146  readOption rOpt_;
147 
148  //- Write option
149  writeOption wOpt_;
150 
151  //- Register object created from this IOobject with registry if true
152  bool registerObject_;
153 
154  //- IOobject state
155  objectState objState_;

ここのヘッダー ファイルを見てください: http://foam.sourceforge.net/docs/cpp/a06519_source.html

ここにコンストラクターの署名があります

IOobject    
(
    const word &        name,
    const word &        instance,
    const fileName &        local,
    const objectRegistry &      registry,
    readOption          r = NO_READ,
    writeOption         w = NO_WRITE,
    bool            registerObject = true
)

ここで利用可能なドキュメントがあります

詳細が必要な場合はお知らせください。さらに探してみます。

于 2013-11-06T13:51:58.070 に答える
2

リンクからヘッダー ファイルに移動すると、メンバーが表示されるため、基本クラスがなく、コンストラクターの初期化リストがメンバーのみを初期化することは明らかです。

127  //- Name
128  word name_;
129 
130  //- Class name read from header
131  word headerClassName_;
132 
133  //- Optional note
134  string note_;
135 
136  //- Instance path component
137  fileName instance_;
138 
139  //- Local path component
140  fileName local_;
141 
142  //- objectRegistry reference
143  const objectRegistry& db_;
144 
145  //- Read option
146  readOption rOpt_;
147 
148  //- Write option
149  writeOption wOpt_;
150 
151  //- Register object created from this IOobject with registry if true
152  bool registerObject_;
153 
154  //- IOobject state
155  objectState objState_;
于 2013-11-06T13:54:44.310 に答える