• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++のこの書き方の意味教えて)

C++の書き方についての意味教えて

このQ&Aのポイント
  • C++初心者が他人のプログラム修正でわからない箇所が多い場合の対処法とは?
  • static Thread *SecondProcess = new Thread(Form1 , false)という文の実行後、次に遷移するのはどうして?
  • Thread(TForm1 *InForm , bool CreateSuspended)の:は何を表しているのか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

AnsiString str("hoge"); // コンストラクト str = "payo"; // 代入

masakazu180
質問者

補足

解答ありがとうございます。 でも、ちょっと私には意味不明です。 あと、 static Thread *SecondProcess = new Thread(Form1 , false) の、static Thread *SecondProcess は、どういう意味でしょうか?ご存知でしたら教えてください。 何回もすいません。

その他の回答 (4)

回答No.5

> static Thread *SecondProcess は、どういう意味でしょうか? SecondProcessはThreadへの静的なポインタ

回答No.3

> : TThread(CreateSuspended) > { > Form1 = InForm; > } > は書き換えると > { > TThread = CreateSuspended; > Form1 = InForm; > } > とまったく同じです。 いや、'まったく'同じではありません。 > TThreadとForm1はクラスのメンバ変数だと思います。 断定はできませんね。 > これらに引数を渡しているだけです。クラスのメンバ関数ではこのように「:」を使って値を代入することもできます。 まちがい。'値を代入する'のではなく、'コンストラクトする'のです。

masakazu180
質問者

補足

色々ありがとうございます。 質問してもよろしいでしょうか? '値を代入する'のではなく、'コンストラクトする' というのはどういうことでしょうか? できるだけわかりやすく教えていただけませんか?

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

static Thread *SecondProcess = new Thread(Form1 , false) は int* lpInt = new int[1]; みたいなものだということからメモリを割り当てていることはわかりますよね。 ここではThreadというクラスを生成しています。そのときの引数がform1とfalseです。 クラスにはコンストラクタおよびデストラクタと呼ばれる特殊なメンバ関数を作ることができます。コンストラクタ名はクラス名と同一、つまりThreadという名前のクラスであればコンストラクタはThread()、デストラクタは「~」を頭につけて~Thread()となります。  コンストラクタはクラスが生成されるときに呼び出される関数で、デストラクタはクラスが破棄されるときに呼び出されます(詳しい話はC++の本を参考にしてください。必ず書いてあります)。 つまり「次にここにいくのかもよくわかりません」という問題の答えは「クラスが生成されたのでコンストラクタが呼び出されたからそこが実行されたのです」。 ただこの場合のコンストラクタの定義はちょっとだけ複雑です。まず Thread(TForm1 *InForm , bool   CreateSuspended) とあることから2つの引数を持ちます。 new Thread(Form1 , false) からそれぞれForm1とfalseがわたるのはいいですよね。 : TThread(CreateSuspended) { Form1 = InForm; } は書き換えると { TThread = CreateSuspended; Form1 = InForm; } とまったく同じです。TThreadとForm1はクラスのメンバ変数だと思います。これらに引数を渡しているだけです。クラスのメンバ関数ではこのように「:」を使って値を代入することもできます。

masakazu180
質問者

お礼

ありがとうございます。 またよろしくお願いします

masakazu180
質問者

補足

ありがとうございます。 すごく詳しく書いていただいて、 非常にうれしく思っています。 内容は、初心者の私にはまだわからないところが ありますが、また勉強したいと思います。 ついでなのですが、 void __fastcall Thread::Execute() { 略 } という文が、その次に呼び出されているのですが、 これも同様の理由でしょうか?

回答No.1

Threadの基底クラスTThreadのコンストラクタ: TThread::TThread(bool) をコールします。

関連するQ&A