Cpp クラス const 新しいページはコチラ
提供: yonewiki
(→クラス const) |
(→クラス const) |
||
85行: | 85行: | ||
} | } | ||
− | // | + | //★2.const付きのオブジェクトからは呼び出し不可能な関数 |
int CConst001::mfpub_Get_m_nValue(){ | int CConst001::mfpub_Get_m_nValue(){ | ||
m_nValue = 10; | m_nValue = 10; | ||
91行: | 91行: | ||
} | } | ||
− | // | + | //★3.const付きのオブジェクトからも呼び出し可能な関数 constメンバ関数 |
int CConst001::mfpubconst_Get_m_nValue() const{ | int CConst001::mfpubconst_Get_m_nValue() const{ | ||
//mpub_nValue = 10;★constメンバ関数ではメンバ変数の変更は出来ない。 | //mpub_nValue = 10;★constメンバ関数ではメンバ変数の変更は出来ない。 | ||
98行: | 98行: | ||
− | // | + | //★4.constメンバ関数はオーバーロードできます。 |
int CConst001::mfpub_Get_m_nValue() const{ | int CConst001::mfpub_Get_m_nValue() const{ | ||
//mpub_nValue = 10;★constメンバ関数ではメンバ変数の変更は出来ない。 | //mpub_nValue = 10;★constメンバ関数ではメンバ変数の変更は出来ない。 | ||
123行: | 123行: | ||
int _tmain(int argc, _TCHAR* argv[]) | int _tmain(int argc, _TCHAR* argv[]) | ||
{ | { | ||
− | CConst001* CConst001_Instance = new CConst001; | + | CConst001* CConst001_Instance = new CConst001;//★5. |
CConst001_Instance->mfpub_Set_m_nValue(1000); | CConst001_Instance->mfpub_Set_m_nValue(1000); | ||
//CConst001_Instance->mpub_constnValue = 1000;★constメンバ変数の呼び出しは出来ない。 | //CConst001_Instance->mpub_constnValue = 1000;★constメンバ変数の呼び出しは出来ない。 | ||
− | const CConst001* CConst001_constInstance = new CConst001; | + | const CConst001* CConst001_constInstance = new CConst001;//★6. |
CConst001_constInstance->mfpubconst_Get_m_nValue(); | CConst001_constInstance->mfpubconst_Get_m_nValue(); | ||
//CConst001_constInstance->mfpub_Get_m_nValue();★const メンバ関数でないと呼べない。 | //CConst001_constInstance->mfpub_Get_m_nValue();★const メンバ関数でないと呼べない。 | ||
152行: | 152行: | ||
'''void CConst001::mfpub_Set_m_nValueConstPara(const int nPara1){''' | '''void CConst001::mfpub_Set_m_nValueConstPara(const int nPara1){''' | ||
+ | ==引数== | ||
+ | ★1.部分のようにnPara1という引数の中身を関数の中で書き換えて利用するようなことがconst付きの方では出来なくなっています。もちろん呼び出す側の引数部分においては、constであろうとconstで無かろうと問題にはなりません。但し呼び出す側で既にconstになっているポインタ型変数や参照型変数をconstになっていない引数をうけとる関数を呼び出すことは違反です。中身が書き換わってしまう可能性があるからです。このあたりのやりとりに関する規則を具体的に理解するには、そのイメージを説明する絵があった方がわかりやすいのかもしれません。 | ||
− | + | ||
+ | ==constメンバ関数== | ||
+ | ★2.★3.★4.の部分の内、★3.★4.のように関数名の最後にconstと記述するようなメンバ関数をconstメンバ関数と呼んでいます。メイン関数側のように呼び出し側のクラスオブジェクトそのものがすでにconstで定義されているか、どうかによって動作が変わる関数と考えていいと思います。constで定義されている場合には★3.や★4.のようなconstメンバ関数として、メンバ関数内でメンバ変数を書き換えないことを保証した関数しか呼び出すことが出来ないオブジェクトになっています。 |