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ポインタはポインタ変数の値が初期化されると,指向を変えることができず,初期化が必要である.その定義形式は以下の通りである: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();