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で質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- その他(プログラミング・Web制作) 変数宣言および代入について 4 2022/11/02 13:03
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダイアログクラスのコントロー...
-
FriendとPublicの違い。。。
-
イベントにAddHandlerされてい...
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
DebugクラスとTraceクラスの違い
-
メンバ変数のサイズの増加
-
継承を重ねた場合のコストはど...
-
C++でJavaのStaticイニシャライ...
-
クラス メンバ関数インライン化
-
継承したクラスを、継承元のク...
-
C++のMFCを使っています。
-
VBのシステムの設計書にUMLは適...
-
このコンパイルエラーの意味に...
-
MFCのドラッグ&ドロップについて
-
C++で継承元のクラスの代入演算...
-
C++ protectedにアクセス不可
-
既定のコンストラクタがない?
-
VC6 コンパイルエラー C2248に...
-
不要になった、普通の構造体の処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
クラスのアドレスを引数として...
-
C++ protectedにアクセス不可
-
【ASP.NET】 独自で作成したク...
-
MFCアプリのコマンドラインでパ...
-
ダイアログクラスのコントロー...
-
エディットコントロールでEnter...
-
このコンパイルエラーの意味に...
-
CMainFrameクラスの使い方
-
イベントにAddHandlerされてい...
-
MFC モードレスDlgについて
-
MFCのCListCtrlでスクロールを検出
-
privateなメンバ関数をテストす...
-
[MFC] CWnd::MessageBoxの警告...
-
継承を重ねた場合のコストはど...
-
DataGridViewのセルに斜線を引...
-
ボタンのオーナードローについて
おすすめ情報