C ++のメンバー関数の後にconstを追加することの問題は何ですか?

これは実際には通常の関数であり、通常の関数でメンバー属性を変更することはできませんが、メンバー属性に可変を追加した後でも、通常の関数で変更することはできます。
例:次のコードは正しいです。

// 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();
}

みんなの褒め言葉は私にとって最大のサポートです。

おすすめ

転載: blog.csdn.net/myf_666/article/details/113588929