Quais são alguns idiomas, conceitos errôneos e truques relacionados ao C ++ que você aprendeu com a experiência?
Quais são alguns idiomas, conceitos errôneos e truques relacionados ao C ++ que você aprendeu com a experiência?
Um exemplo:
class A
{
public:
char s[1024];
char *p;
A::A()
{
p = s;
}
void changeS() const
{
p[0] = 'a';
}
};
Mesmo sabendo que changeS é uma função membro const, está alterando o valor do objeto. Portanto, uma função de membro const significa apenas que ele tratará todas as variáveis como const, e isso não significa que na verdade manterá todos os membros const. (por quê? a palavra-chave const na função membro trata char * p; como char * const p; e não como const char * p;
O que significa, portanto, que p não pode apontar para outra coisa. E não que você não possa alterar os dados de p.