C++学習ノート——共通データの保護(constキーワード)

2265 ワード

1.常態
(1)通常オブジェクトの宣言方法
class Test
{...};

Test const t1(1, 2, 3); //t1    。

もちろんそう宣言することもできます
const Test t1(1, 2, 3);//t1    。

(2)通常のオブジェクトを使用する際の注意点
①オブジェクトがconstで通常オブジェクトとして宣言されている場合、オブジェクト内のすべてのメンバーは変更できません. 
②オブジェクトがconstで通常オブジェクトとして宣言されている場合、オブジェクトの非constタイプのメンバー関数を呼び出すことはできません.これは、これらの非constタイプのメンバー関数が、通常のデータメンバーの値を変更することを防止するためです.
2.常態メンバー
(1)常データメンバー
①通常データメンバーとは、キーワードconstで宣言されたデータメンバーのこと.
const int temp;//temp      。
int const temp;//temp      。

 ② 
コンストラクション関数を使用して通常のデータ・メンバーを初期化する場合は、次のようにパラメータを使用してテーブルを初期化できます.
Test::Test(int t)
{temp = t;//       。}
Test::Test(int t) : temp(t) {}//       。

(2)常メンバー関数
①キーワードconstを使用して宣言されたメンバー関数は、次のような通常のメンバー関数になります.
int getValue() const;//     const           。

②注意:常メンバー関数の宣言と定義には、キーワードconstを追加する必要がありますが、呼び出し時に追加する必要はありません.
int getValue() const;//     const   。
int Test::getValue() const //     const   。
{return temp; }
int x =   .getValue();//     const。

3.常針
キーワードconstでポインタ変数を宣言して初期化するポインタを常ポインタと呼びます.ポインタは、ポインタが示すアドレスを変更することはできません.たとえば、次のようにします.
Test t(1, 2, 3), tx(4, 5, 6);//      t tx。
Test *const pt = &t;//       pt,      ,       。   const      。
pt = &tx;//    ,               。

注:通常ポインタの定義と初期化は同じ文で行う必要があります.そうしないと、コンパイルは通過しません.たとえば、次のようにします.
Test *const pt;//     
pt = &t;//     

注意:常ポインタは指向するアドレスだけでは変更できませんが、彼が指向するアドレスの内容は変更できます.
4.通常オブジェクトへのポインタconstキーで宣言されたオブジェクトは通常オブジェクトとなり、通常オブジェクトへのポインタは通常オブジェクトへのポインタのみとなります.次のようになります.
const Test t(1, 2, 3);//        。
const Test *pt;//            。
pt = &t;// pt  t。

注:通常オブジェクトへのポインタは、非constオブジェクトを指すこともできますが、非constオブジェクトの値はこのポインタで変更できません.
5.オブジェクトの一般参照
関数でエントリパラメータの値を変更しない場合は、次のような一般参照を使用します.
class Test//     
{...}

void change(const Test &tx)//            Test       
{...}
Test t(1, 2, 3);//       
change(t);//  change  ,              ,  t      。