譚浩強《C++対象向けプログラム設計》知識点総括
5378 ワード
1 C++初歩知識
1.1 C++の入出力入力:標準入力ストリームオブジェクト を用いる.出力:標準出力ストリームオブジェクト を用いる.
1.2関数のリロード
1名多用、リロード関数を要求するパラメータの個数またはタイプが元のものと異なる
1.3関数テンプレート
機能の似たような関数に統一的なテンプレートを作成する要求:関数のパラメータ個数は元のものと同じ である.フォーマット: 1.4変数の参照
変数に別名を付けることに相当する、変数とその参照は同じメモリ空間e.gを共有する.
1.5文字列変数
Stringクラス
1.6動的割当て/取り消しメモリ:newとdelete形式:
2クラスとオブジェクトの特性と使用
2.1オブジェクト
属性としてのデータ・メンバーと、特定の機能を実現するためにデータを操作するために使用される動作としてのメンバー関数が含まれます.
2.2プロセス向けプログラミングVSオブジェクト向けプログラミングプロセス向けプログラミング:プログラム=データ構造+アルゴリズム オブジェクト向けプログラム設計:オブジェクト=データ構造+アルゴリズム、プログラム=オブジェクトs+メッセージ 2.3オブジェクト向けプログラミングの4つの主な特徴抽象:関連する事物をまとめ、同じ事物の本質を表す役割を果たす.クラスはオブジェクトの抽象であり、オブジェクトはクラスの具体的な表現形式である. パッケージ:データと操作データの関数をバインドし、具体的な実装の詳細を非表示にし、インタフェースのみを外部に保持します. 継承:既存のクラスを利用して新しいクラスを確立し、新しいクラスは既存のクラスからその既存の特性を得るメカニズム. マルチステート:異なるオブジェクトが受信した同じメッセージに対して異なる動作を生じる現象(単一インタフェース、マルチインプリメンテーション) 2.4クラスの宣言とオブジェクトの定義
クラス宣言形式:
オブジェクト定義フォーマット
2.5クラスのメンバー関数クラスメンバー関数は、クラスの外部インタフェース であるpublicとして一般的に呼び出される必要があるメンバー関数にアクセスすることができる.関数体が短い(3行以内)メンバー関数はクラス内で宣言および定義できます.一般的なメンバー関数では、一般的にクラス内で宣言し、クラス外で定義します(クラス名とドメイン演算子 2.6オブジェクトメンバーの参照オブジェクト名およびメンバー演算子 にアクセスする.オブジェクトの参照およびメンバー演算子 にアクセスする.は、オブジェクトへのポインタ にアクセスする.
2.7構造関数と構造解析関数構造関数によりオブジェクトを初期化(パラメータによる初期化テーブルを含む) .構造関数によるクリーンアップ等の作業 構造と構造関数の実行順序:後構造の先析(類似スタック) 2.8静的データ・メンバー
同類の複数のオブジェクト間でデータ共有を実現でき、メモリに1つのスペースしか占めません.静的データ・メンバーは、オブジェクトではなくクラスが所有するため、コンストラクション関数では初期化できません.クラスの体外でのみ初期化できます.書式:
2.9 Friend関数とFriendクラス
キーワード
2.10クラステンプレート
クラスの抽象であり、多用フォーマットを実現します.
3演算子の再ロード
3.1演算子のリロードは、リロード演算子を定義する関数です.
書式:
3.2リロード演算子タイプクラスメンバー関数として使用:単一演算子のリロードでよく使用される は友元関数として使用されます:両目演算子のリロードによく使用されます 3.3リロードできる演算子
次の5つの演算子を除いて、他の演算子は通常リロードできます.リロードできない5つの演算子:メンバーアクセス演算子 役割ドメイン演算子 条件演算子 3.4入出力演算子の再ロードリロードストリーム抽出演算子 リロードストリーム挿入演算子 3.5オブジェクトと標準データ型の変換その他のデータ型->クラスオブジェクト:変換コンストラクション関数 を使用クラスオブジェクト->別のタイプデータ:タイプ変換関数を使用して、フォーマット 4継承と派生
4.1意味
既存のクラス(親クラス、ベースクラスとも呼ばれる)を使用して新しいクラス(子クラス、派生クラスとも呼ばれる)を構築し、新しいクラスは既存のクラスからその既存の特性を取得し、親クラスにとって派生と呼ばれ、子クラスにとって継承(個人理解)と呼ばれます.
4.2継承分類単一継承:派生クラスは1つのベースクラスから のみ継承されます.多重継承:1つの派生クラスに複数のベースクラスがある 4.3ベースクラスと派生クラスの関係
派生クラスはベースクラスの具体化であり,ベースクラスは派生クラスの抽象化である.
4.4派生クラスの宣言方式
4.5派生類の構成
ベースクラスから継承されたメンバーと、自分で追加されたメンバーが含まれます.
4.6派生クラスのアクセス属性共有継承public:ベースクラスの共有(public)および保護(protected)メンバーは、派生クラスにおいて既存の属性 を保持する.プライベート継承private:ベースクラスの共有および保護メンバーは、派生クラスのプライベートメンバーになります(ベースクラスのプライベートメンバーはベースクラスプライベートであり、派生クラスではアクセスできません) .保護継承protected:ベースクラスの共有メンバーと保護メンバーは、派生クラスの保護メンバーになります(共有メンバーとプライベートメンバーの間にあり、本クラスと本クラスの派生クラスにアクセスできます) .
4.7組み合わせ
あるクラスで別のクラスのオブジェクトをデータ・メンバーとします.組合せも継承も既存のクラスのリソースを有効に利用するが,継承は縦方向の「はい」の関係,組合せは横方向の「有」の関係である.
5多態性と虚関数
5.1多態性
異なるオブジェクトは、同じメッセージを受信すると、異なる動作(単一インタフェースマルチインプリメンテーション)を生成します.メッセージは関数を呼び出し、異なる動作は異なるインプリメンテーションを指します.
5.2分類静的(コンパイル時の)多態性:関数リロードにより を実現する.動的(実行時の)多態性:虚関数による 5.3虚関数は、 を意味する.の機能により、派生クラスでベースクラスと同じ名前の関数を定義することができ、ベースクラスポインタまたは参照によってベースクラスと派生クラスの同じ名前の関数 にアクセスすることができる.の使用法(1)ベースクラスでvirtualで虚関数を宣言する(2)派生クラスでこの関数をオンデマンドで再定義し、関数ヘッダ(インタフェース)を保持するように(3)ベースクラスオブジェクトを指すポインタ変数を定義し、その虚関数をオンデマンドで呼び出すオブジェクトを指すようにする(4)このポインタ変数でこの虚関数を呼び出す .
5.4関連
呼び出した特定のオブジェクトを特定するプロセス、静的関連付けと動的関連付け静的(初期)関連付け:関数のリロード、オブジェクト名によって呼び出された虚関数 など、プログラムのコンパイル(静的構文チェックのみ)時に決定できる.動的関連付け:ベースクラスポインタによって呼び出された虚関数 のような関連付け関係を決定するには、実行フェーズでなければなりません.
5.5虚構造関数
ベースクラスの構造関数を虚関数として宣言する(動的割り当ての空間を取り消すときに継承システム内の各オブジェクトが正しく処理されることを保証できる)
5.6純虚関数と抽象クラス純虚関数:虚関数を宣言するときに「0」に初期化された関数(「有名無実」、派生クラス定義対象)、一般形式 抽象クラス:オブジェクトを定義するのではなく、継承するクラスとして基本タイプとして使用されます.純粋な虚関数を含むクラスは抽象クラスであり,その役割はクラスファミリーとしての共通のベースクラスである.e.g.Shapeクラスは抽象クラスとして、ShapeName()は純虚関数として使用されます.これに基づいて、Pointクラス、Circleクラス、Cylinderクラスを順に定義して継承体系を構築し、対応するクラス宣言でShapeName()虚関数を必要に応じて再定義することができます.
1.1 C++の入出力
istream
と抽出演算子cin>>
ostream
と挿入演算子cout<<
1.2関数のリロード
1名多用、リロード関数を要求するパラメータの個数またはタイプが元のものと異なる
1.3関数テンプレート
機能の似たような関数に統一的なテンプレートを作成する
template
変数に別名を付けることに相当する、変数とその参照は同じメモリ空間e.gを共有する.
int a;
int &b = a; // b int a
1.5文字列変数
Stringクラス
1.6動的割当て/取り消しメモリ:newとdelete
new ( ) //
new [num] //new num
delete [ ] //[ ] ,
2クラスとオブジェクトの特性と使用
2.1オブジェクト
属性としてのデータ・メンバーと、特定の機能を実現するためにデータを操作するために使用される動作としてのメンバー関数が含まれます.
2.2プロセス向けプログラミングVSオブジェクト向けプログラミング
クラス宣言形式:
class
{
private:
;
public:
;
};
オブジェクト定義フォーマット
;
2.5クラスのメンバー関数
::
を追加することを忘れないでください)..
を介してオブジェクトのメンバー.
を介してオブジェクトのメンバーp->
を介してオブジェクトのメンバー2.7構造関数と構造解析関数
同類の複数のオブジェクト間でデータ共有を実現でき、メモリに1つのスペースしか占めません.静的データ・メンバーは、オブジェクトではなくクラスが所有するため、コンストラクション関数では初期化できません.クラスの体外でのみ初期化できます.書式:
static ;
2.9 Friend関数とFriendクラス
キーワード
friend
で友元関数を宣言するには2つに分けられ、一般関数を友元関数と友元メンバー関数として宣言します.2.10クラステンプレート
クラスの抽象であり、多用フォーマットを実現します.
template
3演算子の再ロード
3.1演算子のリロードは、リロード演算子を定義する関数です.
書式:
operator ( ) //"operator "
{ }
3.2リロード演算子タイプ
次の5つの演算子を除いて、他の演算子は通常リロードできます.リロードできない5つの演算子:
.
&メンバーポインタアクセス演算子.*
::
&長さ演算子sizeof
:操作対象はクラス? :
>>
:istream& operator>>(istream& input, &)
<<
:ostream& operator<
operator { }
4.1意味
既存のクラス(親クラス、ベースクラスとも呼ばれる)を使用して新しいクラス(子クラス、派生クラスとも呼ばれる)を構築し、新しいクラスは既存のクラスからその既存の特性を取得し、親クラスにとって派生と呼ばれ、子クラスにとって継承(個人理解)と呼ばれます.
4.2継承分類
派生クラスはベースクラスの具体化であり,ベースクラスは派生クラスの抽象化である.
4.4派生クラスの宣言方式
class :[ ]
{ }
4.5派生類の構成
ベースクラスから継承されたメンバーと、自分で追加されたメンバーが含まれます.
4.6派生クラスのアクセス属性
4.7組み合わせ
あるクラスで別のクラスのオブジェクトをデータ・メンバーとします.組合せも継承も既存のクラスのリソースを有効に利用するが,継承は縦方向の「はい」の関係,組合せは横方向の「有」の関係である.
5多態性と虚関数
5.1多態性
異なるオブジェクトは、同じメッセージを受信すると、異なる動作(単一インタフェースマルチインプリメンテーション)を生成します.メッセージは関数を呼び出し、異なる動作は異なるインプリメンテーションを指します.
5.2分類
virtual
でベースクラスで仮想として宣言する派生クラスで正式に定義された関数5.4関連
呼び出した特定のオブジェクトを特定するプロセス、静的関連付けと動的関連付け
5.5虚構造関数
ベースクラスの構造関数を虚関数として宣言する(動的割り当ての空間を取り消すときに継承システム内の各オブジェクトが正しく処理されることを保証できる)
5.6純虚関数と抽象クラス
virtual ( ) = 0;