
No.5ベストアンサー
- 回答日時:
インクルードせずに、プロトタイプを使う理由としては、
・相互参照がある場合
・includeによるコンパイルにかかる時間を減らす
程度でしょう。
よくあるパターンとしては
#include <boost/ptr_container/ptr_vector.hpp>
class ClassA {...};
class ClassB
{
boost::ptr_vector<ClassA>;
};
のようなヘッダがあり、プリコンパイル済みヘッダが使えないような場合、boostのような
コンパイルに時間がかかるヘッダを出来るだけインクルードしなくて良いようにするために
上記のインクルードではなく
class ClassB;
とプロトタイプ宣言で参照し、どうしても必要な箇所だけincludeする、という構造にすることがあります。
ありがとうございます!
今までは「関数のin/outのパラメータまで情報が渡る分の、includeの方が良いのかな?」と思っていましたが、
大きなクラス、大量のincludeだとコンパイルに時間がかかるので、そういうケースでは、前方宣言にすることにします。
ありがとうございました!
No.4
- 回答日時:
とりあえず。
勝手に言葉作らないでください。
使うなら、その意味を説明してください。
○#includeを使う場合
// ファイル: test0.h
class testA { 定義... } ;
// ファイル: test0.cpp
#include "test.h"
int main(){
testA objA ;
}
○ 質問者が言うところの「Classで宣言」と思われるもの
// ファイル: test1.cpp
class testA { 定義... } ;
int main(){
testA objA ;
}
でよろしいのですか?それとも別のなにかですか?
もし、この2つなら、単一ソースファイルで使うときは、まったく等価です。
No.3
- 回答日時:
あまり詳しくはないですが参考までに。
class ~~とクラス名を書くのは、恐らく前方宣言ではないでしょうか。
2つのクラスがお互いのクラスを参照し合っている時に、どちらかのクラスを、中身は書かずにclass クラス名;とだけ書いておいて、後で中身を書くという方法があります。
いずれにせよ、include文は他のヘッダファイルの内容を読み込むものなので、classと使い分けるとかそういうものではないと思います。
No.1
- 回答日時:
質問の意図がわからないんですが・・・
クラスの定義ができるのはclassかstructだけで、
#includeでクラスの定義はできませんけど。
この回答への補足
クラスの定義をするときに、
そのクラスが必要とするヘッダファイルを#Includeで取り込む際、
#Includeで取り込むのではなく、
Class XXX として記載するケースがあると思います。
どういうときに#Includeを使い、
どういうときにClassを使うのかを知りたいです。
.
意図を伝えられず、申し訳ありません。
クラスの定義をする際の話ではなく、クラスを使うときの話でありました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
プログラマー達は何故、プログ...
-
C#でログファイルにファイルパ...
-
C言語 関数、変数の宣言について
-
visual studio 2022でのC#プロ...
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
-
C# で 数式文字列処理を処理す...
-
C言語のことです。写真(見にく...
-
C言語について。
-
大量のデータを読み込んで表示...
-
[C言語]fputsとfprintfの違い
-
ストリームについて。
-
VisualStudioでC++クラスを追加...
-
逆コンパイルと逆アセンブルの...
-
c言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
ダイアログ表示時にチェックボ...
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
MFCアプリのコマンドラインでパ...
-
ボタンのオーナードローについて
-
MFCのドラッグ&ドロップについて
-
このコンパイルエラーの意味に...
-
オーバーライド関数の呼び出し...
-
C++ protectedにアクセス不可
-
【ASP.NET】 独自で作成したク...
-
個々の関数について継承してい...
-
MFCのCListCtrlでスクロールを検出
-
ダイアログクラスのコントロー...
-
DataGridViewのセルに斜線を引...
-
[MFC] CWnd::MessageBoxの警告...
-
CMainFrameクラスの使い方
-
関数の呼び出し元の検索
おすすめ情報