c++におけるconst関連

1836 ワード

constポインタの定義:
constポインタはポインタ変数の値が初期化されると,指向を変えることができず,初期化が必要である.その定義形式は以下の通りである:type*constポインタ名;
ポインタを宣言する場合は、タイプの前後にキーワードconstを使用するか、両方の場所で使用できます.たとえば、以下は合法的な声明ですが、意味は大きく異なります.
const int * pOne;    //しこうせいけいていすう のポインタで、値は変更できません.
int * const pTwo;    //整形を指す定数ポインタ ,他の変数を指すことはできませんが、(変数)を指す値は変更できます. 
const int *const pThree; //しこうせいけいていすう の定数ポインタ .他の定数を指すことも、指す値を変更することもできません.
これらの宣言を理解するテクニックは、キーワードconstの右側を見て、定数として宣言されたものを決定することです. ,キーワードの右側がタイプの場合、値は定数です.キーワードの右側がポインタ変数の場合、ポインタ自体は定数です.
 
 
関数の後にconstを付ける
コンパイラは自動的に各関数にthisポインタを追加します.1つのクラスの関数にconstを付けると、この関数はクラスのメンバー変数を変更できないことを示します(mutable修飾を加えたものを除き、後述します).実は、このthisポインタにconst修飾を加えたのです.データ・メンバーを変更しない関数はconstタイプとして宣言する必要があります.
#include   using namespace std;   class CTest { public:     void show() const     {         cout << "const"<< endl;     }       void show()     {         cout << "normal"<< endl;     } };   int main() {     CTest a;     a.show();       const CTest b;     b.show();       system("pause");     return 0;}表示結果:normal
                const
aオブジェクトは通常show()を呼び出し、bオブジェクトはshow()constを呼び出す.
void show()constメンバー関数を注釈すると、b.show()がエラーを報告します.
void show()をコメントすると、a.show()呼び出し時にthisポインタにconstが加算されるため、プログラムは正常に動作します.
  Const       :

a.const      const    ,  const             ,  const    .
b.const           ,  const                  .
c.const              ,        const  .     ,            ,    .
e.    mutable        ,                 ,     const           
 

 
3 const        

    “    ”         const  ,       (   )        ,          const        。    
constchar * GetString(void);
           :
char*str = GetString();
      
constchar *str =GetString();