2020/11/21

ここのクラスは早いとこ駆け抜けて早く右辺値参照を触りたいね!

 

1.constメンバー関数

基本的にコンパイラーはメンバー関数を「メンバー変数を変更するかもしれないもの」と見ている。

なので、constインスタンス(中身を変更できないようにしたインスタンス)を作ってそのメンバー関数を呼び出そうとすると(中身を変えるものでなくても)エラーが起きてしまう。関数名とかをパッと見ただけじゃ分からんしね・・・。

 

そんな中登場するのが、constメンバー関数。

これはインスタンスがconstになっていたとしても呼び出すことができるメンバー関数のこと。

宣言方法は普通の宣言の後ろにconstをつけるだけ。

 

class クラス名

{

public:

 戻り値 関数名(パラメータ) const;

}

 

戻り値 クラス名::関数名(パラメータ)const

{処理;}

 

みたいな感じ。

 

そしてちょっと前にオーバーロードをやったけど、constメンバ関数であるか否かでもオーバーロードができる。

この時は引数の型や数が同じでも別に関係ない。単純にそのインスタンスがconstか否かで区別される。

 

mutableを使ったconstインスタンスメンバ関数書替は意味が分からないので今はパスしておきます。