constアプリケーション2
1554 ワード
前にconstに関する記事「constは小結を使う」をまとめましたが、ここで補足します.
1.constは、関数のリロードに使用できます.次の例のクラスメンバー関数:void out()およびvoid out()constを参照してください.
2.関数の後にconstについて、constの関数はデータメンバーを修正できないことを示します.
3.const関数では、そのデータメンバーを変更することはできませんが、ポインタメンバーの「データへの指向」を変更することができます.
4.constのオブジェクトは、const以外のメンバー関数を参照できません.次のconstオブジェクトはconst関数のみを呼び出します.
5.const定数の初期化は、コンストラクション関数の初期化リストでのみ初期化でき、コンストラクション関数内では初期化できません.
詳細は、コードを参照してください.
1.constは、関数のリロードに使用できます.次の例のクラスメンバー関数:void out()およびvoid out()constを参照してください.
2.関数の後にconstについて、constの関数はデータメンバーを修正できないことを示します.
3.const関数では、そのデータメンバーを変更することはできませんが、ポインタメンバーの「データへの指向」を変更することができます.
4.constのオブジェクトは、const以外のメンバー関数を参照できません.次のconstオブジェクトはconst関数のみを呼び出します.
5.const定数の初期化は、コンストラクション関数の初期化リストでのみ初期化でき、コンストラクション関数内では初期化できません.
詳細は、コードを参照してください.
#include <iostream>
using namespace std;
class base
{
public:
int *p_;
int **pp_;
};
class derived:public base
{
int num;
const int num2;
int *p_test;
public:
derived():num2(10)//const
{
int a =10;
num = a;
p_test = &a;
p_ = new int;
pp_ = &p_;
}
void out()
{
cout<<__LINE__<<": "<<__func__<<endl;
num++;
cout<<"num = "<<num<<endl;
}
//const
void out() const
{
cout<<__LINE__<<": "<<__func__<<endl;
//const
//num++;
int &a = **pp_;
//
a = 20;
cout<<"*p = "<<*p_<<endl;
cout<<"**pp_ = "<<**pp_<<endl;
//
*p_test = 30;
cout<<"*p_test = "<<*p_test<<endl;
}
};
int main(int argc, char* argv[])
{
derived d1;
d1.out();
const derived d2;
//const , const 。
d2.out();
return 0;
}