クラスの定義クラスのメモリサイズが揃えられ、空のクラス1バイトクラスのメンバー変数クラスのメンバー関数クラス内宣言および定義クラス内宣言、クラス外実装異なるファイル:.h声明.cpp実現クラスドメインローカル変数:括弧、括弧開始括弧終了グローバル変数:グローバル、生存サイクルグローバルファイル変数:static+グローバル変数、現在のファイル内で使用、生存周期グローバルの静的局所変数:局所,生存周期はグローバルである.
クラスドメイン:クラスオブジェクトからアクセスできるメンバー public:共有、クラスオブジェクトのみ、どこでもクラスメンバーを使用できます.
protected:私のクラスと派生クラスでのみを使用できます.
private:私のクラスでのみを使用できます.
オブジェクト定義:ローカル、グローバル、配列、スタックメンバー関数の使用thisポインタ類と構造体の違いとC++の構造体の違い:定義上:キーワードが異なるstruct class アクセス:書き込みなし、クラスデフォルトはprivate、構造体public 他に区別はない とCの構造体の違い:定義上:キーワードが異なるstruct class アクセス権:Cにはpublic、protected、private はありません.
メンバー:Cの構造体には関数がなく、C++クラスにはメンバー関数がある this:Cの構造体にthisポインタがない ネーミングスペースの役割:ネーミング競合を回避し、ネーミングスペースは別名namespace a=bを果たすことができる.ネーミングスペースは役割ドメインです.変数を定義するために使用できません.ネーミングスペースは役割ドメインです.変数タイプではありません.グローバル範囲内でのみ定義できます.ネストできます.
構造関数1.1構造の役割クラスオブジェクト作成時にクラスオブジェクト空間を初期化するための1.2コンストラクタフィーチャー名前はクラス名と同じで、戻り値(なし)、パラメータ(任意)1.3呼び出しタイミングクラスオブジェクトがメモリを持ち始めたとき解析関数2.1作用オブジェクトが破棄する場合、そのオブジェクトが占有するリソース2.2の特徴を解放する.
関数名とタイプは同じで、構造と区別するために、前に~を付ける.
関数の戻り値:戻り値がないパラメータ:2.3呼び出しタイミングを参照しないでください.
クラスオブジェクトが破棄するとき->クラスオブジェクトメモリが回収されるときローカル変数:役割ドメインが表示されます.
グローバル変数:プログラム終了時スタックオブジェクト:deleteがいつ呼び出されるかは、プロファイルの呼び出し順序を構築する.
メンバーオブジェクトのメモリ内の分散順にを呼び出す.
コンストラクタ分類4.1デフォルトコンストラクタクラス名(){}4.2パラメトリック構造関数クラス名(パラメータリスト){関数体}4.3初期化リスト初期化リストに書かなければならないメンバーはです.
は初期化のみをサポートし、付与はサポートしていません:const 初期化と付与の意味が異なる:参照&クラスオブジェクト:クラスオブジェクトのクラスにはパラメトリック関数がない、初期化リストの初期化順序:メモリ分布順序4.4コピー構築関数パラメータタイプは、現在のクラスオブジェクトの参照であるパラメトリック構造関数である.
呼び出しタイミング:クラスオブジェクトが生成すると、クラスオブジェクトでクラスオブジェクトを初期化する.
CClas A = B
関数パラメータ伝達時:実パラメータがパラメータを初期化するとき、パラメータはを参照しない
関数戻りタイプがクラスタイプの場合4.5変換コンストラクタほとんどの場合、基本データ型でクラスオブジェクトに値を付与したり、クラスオブジェクトを初期化したりするときに呼び出されるコンストラクタを変換コンストラクタと呼びます.eplicitで暗黙的な変換コンストラクタを制限した後、D objecta=D(20)を使用して一時的な無名オブジェクト呼び出しコピーコンストラクタを作成します.
デフォルトメンバー関数Empty(); //
Empty(const Empty&); //
~Empty(); //
Empty& operator=(const Empty&); //
Empty*operator&(); //
const Empty*operator&()const; // const
静的メンバー1.1由来1.2定義静的メンバー変数:static int m_nNum; 類外初期化:int類名::m_nNum = 10; 静的メンバー関数:クラスのメンバー関数名にstatic を付ける
静的メンバー変数はすべてのクラスオブジェクトに共有され、クラスオブジェクトに依存しない1.3はを使用する.
クラスオブジェクト.メンバー変数/メンバー関数クラス名:メンバー変数/メンバー関数1.4とメンバー関数の違い静的メンバー関数と一般的なメンバー関数の違い:静的メンバー関数にはthisポインタがなく、クラスの静的メンバー関数/変数に直接アクセスできます.通常のメンバー関数/変数にアクセスするには、クラスオブジェクトを使用する必要があります.
静的メンバー関数と一般関数の違い≪同一|Same|emdw≫:クラス・オブジェクトを介してクラスにアクセスできる通常のメンバー関数とメンバー変数の一意の違い:アクセス権限が異なり、通常の関数はpublicメンバーにのみアクセスできます.
友元2.1由来
クラス外でクラスを使用したい制限メンバー
2.2友元関数
クラス内でfriend friend void Draw(CTank obj);
を宣言する友元関数と一般メンバー関数の違いを定義します.友元関数にはthisポインタがなく、一般関数ですが、クラスで使用可能な制限メンバーとして宣言されます.クラスのメンバー変数/関数にアクセスするには、クラスオブジェクトが必要です.
2.3友元類class CTank {
friend void Draw(CTank obj);
friend class CDraw;
public:
int m_nBlood;
void Draw() {
printf("%d
", m_nDir);
}
private:
int m_nDir;
};
class CDraw {
public:
void Draw(CTank obj) {
printf("%d
", obj.m_nDir);
}
void Change(CTank& obj,int nDir) {
obj.m_nDir = nDir;
}
};
2.4 Friendメンバー関数
他のクラスのメンバー関数の一部を私の友元関数として宣言します.
2.5とメンバー関数の違い
thisポインタがありますが、このthisポインタは友元クラスのthisポインタではなく、現在のクラスのthisポインタではなく、メンバー関数自体のクラスオブジェクトのアドレスです.したがって、現在のクラスのメンバーを使用するには、現在のクラスのクラスオブジェクトを使用する必要があります.