• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C++】DLLの中身)

C++ DLLの中身と親子クラスの関係について

このQ&Aのポイント
  • C++ DLLの中身とは、親クラスと子クラスの関係について説明します。
  • 親クラスを継承した子クラスを含むDLLが作成されると、子クラスのDLLには親クラスの処理内容も含まれます。
  • 親クラスにバグがある場合、子クラスも再コンパイルする必要があります。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

C++/CLI は無視する. そして, いまさらだがこの質問は自分で試せば答が出るはずじゃないか? 親クラスを ParentClass.h/ParentClass.cpp で, それを継承した子クラスを ChildClass.h/ChildClass.cpp に書いたとする. このとき ParentClass.cpp から ParentClass.obj, ChildClass.cpp から ChildClass.obj ができることになるが, 「子クラスの DLL」を作るときに ・ChildClass.obj だけから作る ・ParentClass.obj と ChildClass.ob の両方から作る ことの両方が可能で, このどちらを使うかによって「親クラスの処理を内包する」こともできるし「子クラスの処理だけを持つ」こともできる. どちらにもメリット/デメリットがあるのはわかるよね?

TeferiMage
質問者

お礼

ありがとうございます! 「子クラスの DLL」を作るときに (1)ChildClass.obj だけから作る (2)ParentClass.obj と ChildClass.obj の両方から作る の2つの方法ができたのですね! .

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

C++ の規格に「DLL」なんてものはないから処理系による. より自明なこととして「どのように DLL を作るか」を知らずして答えることは不可能. ついでに 「 また、DLLがクラスX、クラスYで構成されているとき、 クラスXのobj と、 クラスYのobj と、 クラスXのlib (クラスYから、クラスXの処理を呼び出せるようにするために、クラスX側からpublic で実行できる関数のIN・OUTの仕様が記載されている) クラスYのlib が、含まれているという認識で良いのでしょうか?」 は何を言っているのか全くわからん. 少なくとも「何に」含まれているのかが書かれていない.

TeferiMage
質問者

お礼

ありがとうございます。 (質問の主語述語が曖昧で申し訳ありません。) DLLは言語の規格として決まっているわけではないのですね。 「どのように DLL を作るか」にもよる。ということなのですね。 ということは、 子クラスのDLLに親クラスの処理を含むこともありうるし、 子クラスのDLLと、親クラスのDLLを分けることもありうる。 ということになるのでしょうか? /*************************************/ 「何に」の部分ですが「子クラスに」で質問したかった感じです。 子クラスのDLLは、内部的には、 「自分のクラスと親のクラスのobjとlibが内蔵されている」という認識で合っているのでしょうか? .

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

確認ですが, ChildClass の m_a や GetA, SetA は「オーバーライド」した, つまり ParentClass から継承したのではなく, 改めて ChildClass で定義した ということですか?

TeferiMage
質問者

お礼

すみません、例が良くなかったです。 例は2つ必要でした。 (申し訳ありません…) (1)メソッドをオーバーライドしなかった場合 (「子で再定義していないため、親のdllを参照しに行くような動きになるのか」 それとも 「子クラスに同処理を機械語で内包されているので子クラス内で完結するのか?」を知りたいです。 (2)メソッドをオーバーライドした場合 子クラスとしてのメソッドGet_aの振る舞いをさせたいケースがほとんどでしょうし、 それだけ考えたら、 親のメソッドを子のdllに機械語で内包させる理由はないのかなとも思ったのですが、 明示的に「parent_class::Get_a」と書いたとき、 想定A:親クラスのdllを処理を依頼する のか、 想定B:子クラス内に同名メソッドが親の分と子の分が同梱され、子のDLL内で完結するのか? を知りたいです。

関連するQ&A

専門家に質問してみよう