Меня очень раздражает глупая ошибка, которую я совершил. Но меня даже больше раздражает мой компилятор (g ++ 8.1), который меня не предупреждал. ; -)
Пожалуйста, рассмотрите следующий код:
class Test
{
public:
int getNumber() const
{
return 3;
}
};
int main(void)
{
Test test;
test.getNumber();
return 0;
}
На мой взгляд строка
test.getNumber();
определенно не так. Вызывается константный член Test
, но возвращаемое значение не используется. Хотя я компилировал с -Wall -Wextra
g ++, отказался выдавать предупреждение. Я проверил документацию -Wunused-result
. Если я добавлю атрибут __attribute__ ((warn_unused_result))
к члену, то компилятор действительно предупредит меня.
Но зачем это нужно? Не всегда ли игнорируется возвращаемое значение метода const? И разве у меня не должно быть возможности автоматически установить атрибут warn_unused_result
для всех членов const?
Я очень взволнован вашими ответами.