constなメンバ関数

const-member-function.png

constなメンバ関数

目的

  1. その関数が、constなオブジェクトに対して使われるかもしれないから。
  2. その関数を、子クラスに上書きされたくないから(関連項目:Template Method)

1.の意味は、宣言したクラス自身にconstという修飾子がついた場合、という意味である。
もし、これをやらなかったら、C2662エラーになる。
もし、戻り値を持たないvoidなメンバ関数ならこれは要らない。

#pragma once
#include <iostream>
using namespace std;
class CMiffy
{
public:
    CMiffy(void);
    ~CMiffy(void);
    void function();
    void function()const;//constなメンバ関数
};
#include "Miffy.h"
CMiffy::CMiffy(void)
{
}
CMiffy::~CMiffy(void)
{
}
void CMiffy::function(){
    cout<<"constじゃないメンバ関数"<<endl;
}
 void  CMiffy::function ()const{
    cout<<"constなメンバ関数"<<endl;
}
#include "Miffy.h"
void main(){
    CMiffy miffy;
    const CMiffy const_miffy;
    miffy.function();
    const_miffy.function();//もしconstなメンバ関数を作らなければC2662エラー
}

メンバ関数じゃない関数にはconstをつけない!

つけたらエラーになります

困ったとき

サポートサイト Wikidot.com