この研究は、C ++プライマープラス(第6版)の研究ノートを指摘しています。あるC ++の研究ノートは、(2)に従います。C ++できミャオ族ミャオ族の基本を確認します。
ソースhttp://www.cnblogs.com/zrtqsk/p/3881141.htmlを記入してください、ありがとうございました!次のように。
第IX章
1、C ++プログラム・コンポーネント -
(1)ヘッダ:これらの構造の構造プロトタイプ宣言および使用を含みます。
(2)ソースコードファイル:構造に関連付けられた関数のコードが含まれています。
(3)、ソースコードファイル:構造に関連付けられた機能を呼び出すためのコードを含んでいます。
2、ヘッダファイル -
;の#defineまたはシンボリック定数、上記で定義のconst;宣言構造、クラス宣言、テンプレート宣言、インライン関数、関数プロトタイプ:(1)、多くの場合、コンテンツを含みます。
角括弧で囲まれたファイル名の場合(2)、コンパイラは、ファイルシステム内のホストシステムメモリ標準ヘッダファイルを検索します。
二重引用符でファイル名場合は(3)、コンパイラは、まず現在の作業ディレクトリまたはソースコードディレクトリを検索し、標準位置で見つけます。
(4)、同じファイルは一度だけ、同じヘッダファイルを含むことができます。それが含まれている最初の時間以外のすべてを無視します。
Coordin.hヘッダファイル、頻繁に使用する:COORDIN_H_は* / #endifのCOORDIN_H_ / *ヘッダファイルの内容を定義#ifndefの
3、コンパイルプロセス -
(1)コマンド:CCのfile1.cppのfile2.cpp
(2)前処理ファイル(ファイルヘッダ等)、およびソースコードの合併を含みます。一時ファイルのtemp1.cppとtemp2.cppを生成します
file1.oとfile2.oを:(3)、コンパイラはソースコードファイルは、各オブジェクト・コード・ファイルに対して作成され
(4)、リンカは、コードファイル、ブートコードとライブラリコードのマージオブジェクトの実行可能ファイルを生成します:a.outのを
(注意ありません!いいえリンクコンパイルされたモジュールを、すべてのオブジェクトファイルとライブラリが同じコンパイラが生成していることを確認してください。)
4、永続ストレージ - 連続自動ストレージ、静的ストレージ永続的、連続スレッドストレージ(C ++ 11)、動的記憶連続。
図5に示すように、スタック - 隣接するメモリセルのスタックデータ
(1)と、2つのスタックトレースポインタを使用して、スタックボトム(スタックの先頭位置)を指し、スタック(次の利用可能なメモリセル)を指し
(2)、新しい値は削除されていませんが、マークされません。
図6は、セックスをリンク -
(1)、外部リンク、他の文書でのアクセシビリティ。例えば:外部関数、変数定義staiticを使用せず
(2)、内部リンクでのみ現在のファイルにアクセスすることができます。例えば:外部関数、定義された静的変数を使用して
(3)、そこにはリンク性がなく、または関数は、現在のブロックにアクセスすることができます。例えば:コードブロックで定義された変数
(すべての静的変数が最初にゼロに初期化されている!メモし、動的および静的初期化を選択します。)
7、変数宣言 -
シングル定義されたルール - >変数は一度だけ定義されます
(1)、宣言(定義)定義:変数のための記憶領域を割り当てます。
既存の変数を参照し、領域を割り当てられません:(2)、(ステートメント)の文を引用しました。初期化されていない、キーワードexternを使用してください。
(他のファイルがextern宣言を使用して、ファイルに定義されている必要があり、複数のファイルに外部変数を使用するには!注意してください。)
(extern宣言を使用すると、それが外部になっ作り、デフォルトの内部リンクを上書きすることができます)
。8、CONSTのchar constが* A = { "A"、 "B"、 "C" ...} [12である]; // CONSTは、最初の文字列が変更された防ぐ、二番目の配列を確保するために、各ポインタCONSTそれはもともと文字列を指摘しました。
このタイプのchar *ポインタ[12]、即ち配列であり、ポインタのアレイサイズは12 char型です。第一の変形CONSTチャー*、CONSTは、次の[12]を修正しました。Soが
9、指定子と修飾子 -
(1)キーワードthread_local:同じ連続変数の連続性を示し、それが属します。
(2)、CONST:メモリが初期化され、プログラムはそれを変更することはできません。内部としてのconstグローバル変数のリンク。
(3)、揮発性:すべての値は、最適化の値を許可していません。
(4)可変:構造(またはクラス)変数がCONSTであっても、可変修飾メンバーも修飾することが可能です。
10は、機能のリンク - 永続的なすべての機能を保存するには、外部のリンク自動的に静的です。静的およびプロトタイプで使用することができ、内部リンクの集合として定義されます。
11、新しい初期設定を使用して -
=新しいINT(5)INT; //はより便利で多目的な5比較ブレース初期の値以下に設定。
(メモリの量は、新しい要求を見つけることができない、失敗は、例外はstd :: bad_allocをスローします)
(1)、new演算子は、実際にvoid *型new演算子(STD :: size_t型)を呼び出します。
(2)は、オペレータが新しい[]実際ボイド*オペレータ新しい[](スタンダード:: size_t型)を呼び出す; //はstd :: size_tの実際のtypedef別名、適切な整数に対応します。
12、new演算子を配置します -
あなたは、使用するメモリ位置を指定することができます。メモリセルが使用されていないのを追跡しないで、また未使用のメモリ・ブロックを見つけること。
(1):の#include <新規>チャーバッファー[50]; struct1の* S =新しい(バッファ)struct1; // struct1サイズのバッファからメモリを割り当てます。
13、名前空間 -
Javaパッケージと同等の、しかし多くの異なるがあります。
(1)は、別の名前空間に配置することができるグローバルネームスペースであってもよいです。
(2)、デフォルトでは、リンク名の名前空間宣言は外です。
(3)、グローバルネームスペース、ファイルレベルの領域の宣言に対応し、グローバル変数がここに配置されています。
// QSKに名前を追加し、{CHAR *名(CONSTのchar *)}名前空間QSK:(4)、名前空間が開いている、すなわち、特定の名前のような既存の名前空間に加えてもよいです。
(5)のような、各オペレータの名前の範囲によって定義される:COUT << QSK ::名<< ENDL。
14、宣言を使用してコンパイラディレクティブを使用して -
(1)特定の識別子が利用可能であること文を使用。等、(NO名前は、定義されていない受信として使用される):使用のstd :: COUT。
(2)使用可能な全空間そのコンパイラディレクティブの名前を使用。等、(名前空間よりも)使用して名前空間std。
(ローカルではなくグローバルに有利な範囲だった文を、使用するためのヘッダファイルでコンパイラディレクティブを使用して使用しないように注意してください。)
章X
15、クラス -
(1)は、クラスのメンバは、データの関数であってもよいかもしれません。アクセス制御文字とクラス宣言は、記述するとき。
(2)メンバ関数の定義、スコープ解決演算子(使用:の機能が属するクラスを表すために:)。ボイド証券::更新(ダブル価格){}
(これは、クラスのprivateメンバにアクセスすることができます)
(3)関数の定義は、クラス宣言、自動インライン関数に位置しています。
} {インラインボイドストック::更新(二重価格):(4)、クラス関数インライン関数の外に作ることができる、唯一のようなインライン修飾子クラスの実装を使用する必要があります
(5)オブジェクトを作成するには、例えば:ストックAは、B;また、オブジェクトに割り当てられた新たなメモリ空間を使用することができます。以下のような:証券、A =新証券;
(6)のようなオペレータによるメンバ関数メンバへ:a.show();
クラスメソッドのすべてのオブジェクトの共通セット;(7)、作成されたオブジェクトの各々は、内部変数およびクラスのメンバーを格納するための自身の記憶空間を有しています。
16、アクセス制御--private、公共、保護されました
クラス宣言でprivateキーワードを使用せずに、それは、アクセス制御のデフォルトタイプです。
(注意!C ++は、クラス構造は同じ特性を持っていますが、デフォルトのアクセス型構造はpublicです。)
17、クラスの設計 -
(1)、クラス宣言を提供します。
(2)実装クラスのメンバ関数。典型的には別個の関数定義を提供し、(::)機能を開発することがどのクラスに属します。
18、クラスのコンストラクタ -
具体的には、新しいオブジェクトを構築し、そのデータメンバーに値を割り当てるために使用されます。
(1)、およびプロトタイプヘッドコンストラクタ関数は値を返さない、とvoid型を宣言されていません。コンストラクタは、宣言された型を持っていません。
(2)それは、クラスのコンストラクタのパラメータ表現のメンバーではないが、その値が与えられると、パラメータ名は、クラスメンバーと同じにすることはできません。(Javaのとは違って)
(一般的な方法は_ M_プレフィックスデータメンバー名を使用するか、または接尾辞を使用することです)
19、コンストラクタを使用して -
(1)、暗黙呼び出し:在庫S( "A"、22、1.2);または在庫。
(2)は、明示的なコール:株価S =株価( "A"、22、1.2)。
(Javaへの同様のコンストラクタの他の特徴に注意してください。)
20、デストラクタ - オブジェクトの有効期限が切れたとき、プログラムが自動的にクリーンアップ作業を完了するために、メンバ関数を呼び出します。以下のような:〜証券();
(注意!新しいオブジェクトは、そのデストラクタが自動的に呼び出されたときに、削除リリースメモリを使用して作成されている場合。)
21は、オブジェクトの割り当て - オブジェクトが同じタイプの他のオブジェクトに割り当てられている場合、デフォルトで、各データ・ソースのコンテンツオブジェクトメンバは、ターゲットオブジェクトにコピーされます。
(1)初期化:在庫S =証券( "A"、22、1.2); //一時変数を作成することができます。
(2)、割当モード:S1 =証券( "A"、22、1.2); //は、一時的な変数を作成しますが代入する前に常にあります。そして、自動的に一時変数のデストラクタを呼び出します。
22、constメンバ関数 - オブジェクト・クラスを変更しない方法を決定します。以下のようなファンクションキーの後にconstの括弧、:無効株式::ショー()constは、
23、C ++ 11は、リストを初期化する - ストック運動選手{ "ABCD" が}ストックを一致するために::ストック(CONSTのstd ::文字列&CO、長いN = 0、二重PR = 0.0)。
ストックC {}のために、デフォルトのコンストラクタと一致します。
図24は、このポインタ - 方法で使用されるクラスは、呼び出しオブジェクトへのこのポインタは、オブジェクト・クラス・メソッドは、アドレスを呼び出します。コール全体のオブジェクトを引用するには、*これを使用することができます。
25、オブジェクトの配列 - 例えば:ストックS [4] = {ストック( "A"、22、1.2)、ストック()、ストック( "A"、22、1.2)}。
//ここではまずデフォルトコンストラクタを使って配列の要素を作成し、一時的なオブジェクトコンストラクタの花のブラケットを作成し、その後、一時オブジェクトの内容は、対応する要素にコピーされます
(注意!オブジェクトの配列クラスを作成し、クラスがデフォルトのコンストラクタを持っている必要があります。)
26は、クラス定数をスコープ -
(1)、列挙はクラス全体のスコープではなく、オブジェクトの一部、クラス内で宣言が、クラスに属します。
(2)、静的記憶領域に配置される定数のキーワード静的変形を使用し、被覆されていません。
27、新しい列挙--enumクラスまたは列挙型の構造体
(1)、スコープの量は、列挙されたクラスです。列挙型列挙型は、クラス名で必要な量を定義します。
(2)従来の列挙は自動的に整数に変換するが、範囲が整数に暗黙的に列挙されていません。しかし、それは明示的に変換することができます。
(3)新しい列挙int型の基礎となるだけでなく、下地の種類を指定することができ、例えば:列挙クラス:短いピザ{A、B、C、D}。
28概要 -
(1)、クラスのデータとメソッドを1つの単位、データ隠蔽のためのプライバシーに組み合わせます。クラスオブジェクトはクラスのインスタンスである、ユーザ定義型です。
(2)、ヘッダファイル内のクラス宣言、ソースコードするメソッドファイルに定義されたメンバ関数。
(3)、各オブジェクトは、独自のクラスのデータ共有方法を格納します。
(4)、抽象データ型(抽象データ型) - ADT
ます。https://www.cnblogs.com/zrtqsk/p/3881141.htmlで再現