Cpp クラス const 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(クラス const)
(クラス const)
85行: 85行:
 
}
 
}
  
//★const付きのオブジェクトからは呼び出し不可能な関数
+
//★2.const付きのオブジェクトからは呼び出し不可能な関数
 
int CConst001::mfpub_Get_m_nValue(){
 
int CConst001::mfpub_Get_m_nValue(){
 
   m_nValue = 10;
 
   m_nValue = 10;
91行: 91行:
 
}
 
}
  
//★const付きのオブジェクトからも呼び出し可能な関数 constメンバ関数
+
//★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行:
  
  
//★constメンバ関数はオーバーロードできます。
+
//★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になっていない引数をうけとる関数を呼び出すことは違反です。中身が書き換わってしまう可能性があるからです。このあたりのやりとりに関する規則を具体的に理解するには、そのイメージを説明する絵があった方がわかりやすいのかもしれません。
  
★1.部分のようにnPara1という引数の中身を関数の中で書き換えて利用するようなことがconst付きの方では出来なくなっています。
+
 
 +
==constメンバ関数==
 +
★2.★3.★4.の部分の内、★3.★4.のように関数名の最後にconstと記述するようなメンバ関数をconstメンバ関数と呼んでいます。メイン関数側のように呼び出し側のクラスオブジェクトそのものがすでにconstで定義されているか、どうかによって動作が変わる関数と考えていいと思います。constで定義されている場合には★3.や★4.のようなconstメンバ関数として、メンバ関数内でメンバ変数を書き換えないことを保証した関数しか呼び出すことが出来ないオブジェクトになっています。

2015年5月12日 (火) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス