第一章CからC++へ

2521 ワード

目次
  • 参照
  • 動的メモリ割り当て
  • 関数デフォルトパラメータ&インライン関数&リロード関数
  • デフォルトパラメータ
  • インライン関数
  • リロード関数
  • クラスとオブジェクト
  • 構造化プログラム設計の欠陥
  • オブジェクト向けプログラム設計

  • *北京大学郭炜C++慕課受講ノート*
    参照
  • は、変数に別名を付けることに相当し、そのうちの任意の変数の変更によって、別の変数値の変更も生じる
  • である.
  • 使用法:
  • 参照定義後、参照オブジェクト
  • を変更することはできません.
  • constを加える常参照変数の場合、参照変数によって参照値(常ポインタ変数と類似)を変更することはできません
  • .
  • 関数パラメータ
  • 関数戻り値
    int &getn(){return n;}
    int main(){
        getn()=5;
        output(n);
        return 0;
    }
    
  • ダイナミックメモリ割り当て
  • 用法
    int *p=new int;
    delete p;
    p=new int[10]; //Assign space of the int array for p
    delete [] p; //Delete the array
    
  • malloc/freeの違い:
  • newはオブジェクトを作成することができ、構造関数を呼び出すが、mallocは単純に空間
  • を割り当てただけである.
  • deleteオブジェクトを削除するときに構造関数を呼び出し、クラス内で申請する動的メモリが構造関数によって一括して解放されることを保証するが、freeは単純にポインタが指す空間
  • を解放するだけである.
  • delete&delete []の違い:
  • 単純なタイプの配列については、両者に差はない
  • deleteは配列空間を解放するが、最初の要素の構造関数のみを呼び出し、残りの要素は呼び出さない.


  • 関数デフォルトパラメータ&インライン関数&リロード関数
    デフォルトのパラメータ
  • 目的:プログラムの拡張性を高める(パラメータを追加する場合、元のパラメータを変更する必要はない)
  • は右側の連続するいくつかのパラメータのデフォルトのみで、あるパラメータ
  • をスキップすることはできません.
    インライン関数
  • 目的:関数呼び出しのオーバーヘッドを低減する
  • は簡単な関数に適用され、実行速度は
  • 速い.
  • コンパイラは、呼び出し部
  • に関数コードを直接埋め込む.
    さいかかんすう
  • 目的:ネーミングの複雑さを低減する
  • 条件:関数入力パラメータ個数|タイプ|順序が異なる(戻りタイプが異なる場合はカウントしない)
  • コンパイラは、関数入力タイプに応じて対応する関数
  • を選択する.
    クラスとオブジェクト
    構造化プログラム設計の欠陥
  • プログラム=データ構造+アルゴリズム
  • プログラムはグローバル変数と多くの相互呼び出し関数からなり、関数とその操作のデータ構造は直観的に関連していない
  • である.
  • プログラムの規模が大きくなるにつれて、関数とデータ構造の関係、関数間呼び出しの関係は直感的ではない
  • である.
  • は概念をカプセル化、隠すことがなく、プログラムのメンテナンス、拡張、エラー
  • に不利である.
  • 関係が複雑で、
  • を多重化することが困難である.
    オブジェクト向けプログラミング
  • オブジェクト向けプログラム=クラス+クラス+クラス+…
  • は、データ構造とそのデータ構造を操作する関数とを結合する、すなわちパッケージ
  • である.
  • 特徴:抽象、パッケージ、継承、マルチステート
  • メモリ割り当て:メンバー変数のサイズの和に等しく、関数はオブジェクト共通であり、
  • が格納される.
  • 演算:=で値を割り当てることができますが、サイズ
  • を直接比較することはできません.
  • アクセス属性:
  • privateオブジェクトメンバー関数または同類メンバー関数のみが
  • にアクセスできます.
  • protected同類メンバー関数および派生クラスのみが
  • にアクセス可能
  • public任意の場所から
  • にアクセス可能
  • 非表示:privateオブジェクトはメンバー関数のみでアクセスでき、後期プログラムのメンテナンスが容易
  • 関数の再利用:メンバー関数のパラメータテーブルが異なる場合(デフォルトのパラメータの二義性を避けることに注意する必要があります)、
    class A{
        int x;
        public:
        	void value(int n=0){x=n;}
        	int value(){return x;}
    } //   value() ,     
    
  • のように