¿Cuál es el problema de agregar constante después de la función miembro en C ++?

Esta es en realidad una función regular y los atributos de miembro no se pueden modificar en la función regular, pero después de agregar mutable al atributo de miembro, todavía se puede modificar en la función regular.
Por ejemplo: el siguiente código es correcto.

// An highlighted block
class Person {
    
    
	
public:
	void showPerson() const {
    
    
		this->m_A = 100;
	}
	mutable int m_A;
};

Sin embargo, si elimina mutable, el resultado es incorrecto y se informará un error.

Cuando se trata de funciones constantes, debes mencionar los objetos constantes. Si se agrega constante antes del objeto, se llama al objeto como un objeto constante. El objeto constante solo puede llamar a la función constante , por ejemplo:

En las siguientes funciones, no se informará ningún error en la función de prueba, pero se informará un error en la función principal, mostrando (error (activo) el objeto E1086 contiene un calificador de tipo que es incompatible con la función miembro "Persona :: diversión "), a saber: el objeto constante solo puede llamar a una función constante, showPerson es una función constante y diversión es una función normal .

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

Los elogios de todos son el mayor apoyo para mí.

Supongo que te gusta

Origin blog.csdn.net/myf_666/article/details/113588929
Recomendado
Clasificación