Какие идиомы, заблуждения и ошибки, связанные с C ++, вы узнали из опыта?
Какие идиомы, заблуждения и ошибки, связанные с C ++, вы узнали из опыта?
Пример:
class A
{
public:
char s[1024];
char *p;
A::A()
{
p = s;
}
void changeS() const
{
p[0] = 'a';
}
};
Даже знаю, что changeS - это постоянная функция-член, она меняет значение объекта. Таким образом, функция-член const означает только то, что она будет обрабатывать все переменные как const, и это не значит, что она на самом деле будет поддерживать все члены const. (почему? Ключевое слово const в функции-члене обрабатывает char * p; как char * const p; а не как const char * p;
Следовательно, это означает, что p не может указывать на что-то еще. И не то, что вы не можете изменить данные р.