(知識2)クラスとパッケージ

http://www.runoob.com/cplusplus/cpp-data-encapsulation.html

1つの簡単な例

 

 

クラスボックス
{ 
   パブリック:
      ダブルgetVolume(無効)
      { 
         戻り長さ*幅*高さ。
      } 
   プライベート:
      倍長。//长度
      ダブル幅; //宽度
      ダブル高さ; //高度
};

  

カプセル化されたデータの例

C ++プログラムで、パブリックとプライベートのメンバーを持つ任意のクラスは、データ抽象化とカプセル化データの例として使用することができます。次の例を考えてみます。

#include <iostreamの> 
使用して名前空間STD; 
 
クラス加算{ 
   パブリック:
      //コンストラクタ
      加算器(INT I = 0)
      { 
        合計= I; 
      } 
      //外部インターフェース
      ボイドaddNum(INT番号)
      { 
          合計+ =数; 
      } 
      / /外部インタフェース
      INT getTotal()
      { 
          合計を返す; 
      }; 
   プライベート:
      //は、外部データ非表示
      合計INTを; 
}; 
int型のmain()
{ 
   加算器と、
   
   a.addNum(10); 
   a.addNum(20です)。
   .addNum(30)。
 
   裁判所未満<< "合計" << a.getTotal()<<てendl; 
   0を返します。
}

  

2C ++オブジェクト指向プログラミング入門

データのカプセル化は、一緒にバンドルデータ及び操作データを機能させる機構であるデータ抽象化がユーザに対するインターフェースであり、機構の実装の詳細を非表示にのみ露出されています。

オブジェクト指向プログラミング(オブジェクト指向プログラミング)、OOPと呼びます。

従来のプロセス指向のプログラミングにおいて、データと関連するデータ操作機能は、別個の独立したエンティティです。

オブジェクト、そのようなオブジェクトは、すべての周りに実際にあり、プログラミングの観点のために、A)属性の系列(データ)を含むオブジェクト、オペレーションのB)シリーズ(機能)。

OOPオブジェクトは、オブジェクトの実体(すなわちエンティティクラス)を構成し、一緒に両方を含む、デザインの特徴、特性及び含むオブジェクトの振る舞いを提供します。

オブジェクトの実体は、プログラムより、モジュラー読みやすくし、より高いレベルに、改善されたコードの再利用を書くことが容易になります。

オブジェクトは、データ操作のための直接的な方法を提供する相互作用を定義し、オブジェクトとどのようにオブジェクト間の相互作用。

カプセル化、継承、ポリモーフィズムと抽象化:もっと重要なのは、OOPは、より実用的な概念を提供します。

これは即ち、カプセル化されたデータは、クラスと操作機能エンティティにオブジェクトパッケージに焦点を当てます。

構造体とクラスとの間の1つの本質的な違いは、それらのアクセス可能性を制御するために使用することができるクラス識別子のメンバーです。

一般的に、メンバ変数のクラス、区別するために接頭辞「M_」:

3コンストラクタⅠ

1)コンストラクタ:クラスがインスタンス化されるとき、特別なメンバ関数が実行され、通常のメンバ変数を初期化します。

コンストラクタ明確な命名規則:A)関数名やクラス名は同じでなければならない; B)()のボイドを含むノーリターンタイプ。

引数なしのコンストラクタない - 引数のないコンストラクタ、クラスのデフォルトコンストラクタ:

 

通常、クラスはデフォルトコンストラクタが含まれている、あなたはメンバ変数を初期化することができます。

引数のコンストラクタを含む - コンストラクタのパラメータを、指定された値は、メンバ変数に付与することができます。

 

二つ以上のコンストラクタ、同様のオーバーロード関数、コンストラクタは、固有の正面(パラメータおよびパラメータ・タイプの数)を有していなければなりません。

クラスはまた、唯一の引数のコンストラクタは、デフォルトのコンストラクタを含めることができます。

 

 

4デストラクタ

析构函数是类的另一种特殊的函数,当类的对象销毁时调用;它和构造函数是成对出现的。

普通的简单类,一般不需要析构函数;因为C++会自动回收垃圾;

如果类中执行了某些动态内存分配,则需要显式定义析构函数,并释放回收垃圾;

析构函数的明确命名规则:A)函数名和类名一样,并前缀'~';B)不能带参数(即意味着只有一个析构函数);C)没有返回类型。

 

 

注意动态分配,必须提供析构函数,来回收分配的空间。

5  静态成员函数

不用创建即可以访问

如静态成员变量一样,静态成员函数是属于类的本身,不属于任何类的对象;

如静态成员变量访问一样,可以通过:类名::静态成员来访问类的静态成员变量。

注意:静态成员函数,没有this指针;

例如:

 

6 类代码和头文件

头文件的使用可达到重用的效果;所以将类的定义放在头文件中,而成员函数放在.cpp中定义;而cpp的名字需和类的名字相同。

Date.h:

Date.cpp:

推荐分离类的定义中的成员函数到类外定义。

 

おすすめ

転載: www.cnblogs.com/kekeoutlook/p/11210849.html