これは実際には通常の関数であり、通常の関数でメンバー属性を変更することはできませんが、メンバー属性に可変を追加した後でも、通常の関数で変更することはできます。
例:次のコードは正しいです。
// An highlighted block
class Person {
public:
void showPerson() const {
this->m_A = 100;
}
mutable int m_A;
};
ただし、ミュータブルを削除すると、結果が間違ってエラーが報告されます。
定数関数に関しては、定数オブジェクトについて言及する必要があります。オブジェクトの前にconstを追加すると、オブジェクトは定数オブジェクトとして呼び出されます。定数オブジェクトは、定数関数のみを呼び出すことができます。次に例を示します。
次の関数では、テスト関数でエラーは報告されませんが、メイン関数でエラーが報告され、(エラー(アクティブ)E1086オブジェクトにメンバー関数 "Person :: funと互換性のない型修飾子が含まれていることが示されます。 ")、つまり:定数オブジェクトは定数関数のみを呼び出すことができ、showPersonは定数関数であり、funは通常の関数です。
// An highlighted block
#include<iostream>
using namespace std;
class Person {
public:
void showPerson() const {
this->m_A = 100;
}
void fun() {
}
mutable int m_A;
};
void test() {
const Person p;
p.m_A = 100;
p.showPerson();
}
int main() {
const Person p;
p.fun();
}
みんなの褒め言葉は私にとって最大のサポートです。