掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
カプセル化のクラスソースはヘッダだけというのは? (ID:51038)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
・コンパイルに時間がかかる 毎回全ての関数を構文解析・意味解析することになるためです。 class A; としておけば済むはずだった物が, class A { /* ... */ }; などと書けば,当然それだけ時間がかかります。 ・動作を変更しただけで関係するファイルすべての再コンパイルが必要になる 次のような依存関係の時に,a.cppだけコンパイルすれば良かった物が, a.cppの内容をa.hに入れてしまうとb.cppとc.cppまでコンパイルする必要が出てきます。 a.cpp: a.h b.cpp: a.h c.cpp: a.h ・内部結合を持つ関数だけなので,非常に無駄が多くなる ヘッダに書く以上,定義は内部結合を持つ識別子のみとなります。 すると,全ての関数は内部結合を持つことになり,クラスを利用する全ての翻訳単位に同じ関数が含まれることになります。 もちろん,VC++のリンカのように一つに纏めることもできるでしょうが, そのようなリンカだけではないですし。 ・実装の詳細までクラス定義に入り込むと非常に読みにくい JavaやC#でのクラス定義の一番の問題がこれだと思います。 ひとつのファイルに実装を全て書くとなると,クラスの定義自体が非常に長くなってしまいます。 C++の場合は,複数のファイルにメンバ関数の定義を分散させることで, 読みやすくなりますし,依存関係を減らすことが出来ます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.