プロが教える店舗&オフィスのセキュリティ対策術

int CClassTest::FuncA() const
{
(省略)
}

上記のC++の記述があったとして、この場合の「const」ってどのような意味があるのでしょうか?
何がconstになるのでしょうか。

A 回答 (2件)

例えば、


class CClassTest {
private:
  int Member;
public:
  int FuncA();
  int FuncA() const;
};
とのクラスで、
CClassTest test_a;
CClassTest const test_b;
とのインスタンスである場合に、
test_a.FuncA()は非const関数が、test_b.FuncA()はconst関数が呼ばれます。const関数内ではメンバ変数を変更することができない(例えばint FuncA() constの中ではMemberの値を変更することができない)ことから、「クラスの状態(メンバ変数)がconstになる」と考えることができるのでしょうか。test_bはconstとしているのですから、その状態が変更されては困るということでしょうか。
    • good
    • 0
この回答へのお礼

インスタンス宣言により呼ばれるメンバ関数が異なるのですね。
ありがとうございます。

お礼日時:2004/12/25 06:50

普段constは定数のように一定の値を取るときに使いますよね。

それと同じような感じで「class内のメンバ変数に変更を加えない」という意味です。

どんなときに使うかと言うと例えば
classCAAA
{
 int m_nData;
public:
 CAAA()
 {
  m_nData = 0;
 }
 boolIsZero(void) const
 {
  returnm_nData == 0 ? true : false;
 }
};
こんなクラスがあったとします。
このクラスを使っているうちに
boolCheck(const CAAA& ccc)
{
 returnccc.IsZero();
}
Check関数ではCAAAの中身を改変しないからconst参照で渡そうなんてすると...IsZero関数にconst指定がないとエラーになります。
    • good
    • 0
この回答へのお礼

なるほどです。
型チェックでエラーになってくれるんですね。
ありがとうございます。

お礼日時:2004/12/25 06:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!