Конструкторы класса C ++ квалифицированы как __attribute __ ((pure)) или __attribute __ ((const)) - PullRequest
0 голосов
/ 19 ноября 2018

Могут ли и должны ли быть объявлены конструкторы класса C ++ __attribute__((pure)), если они могут получать данные только через его параметры?И в каких случаях их следует квалифицировать как __attribute__((const))?

1 Ответ

0 голосов
/ 19 ноября 2018

GCC предупреждает, когда вы квалифицируете конструкторов как pure или const. Это связано с тем, что конструктор ничего не возвращает (возвращает void) и не имеет особого смысла иметь атрибуты pure или const для таких функций.

Смотрите демоверсию Godbolt здесь .

<source>:3:30: warning: 'pure' attribute on function returning 'void' [-Wattributes]
     A()  __attribute__((pure));

                              ^
<source>:8:31: warning: 'const' attribute on function returning 'void' [-Wattributes]
     B()  __attribute__((const));                               ^

Из документации GCC :

сопзЬ
...
Поскольку у const-функции не может быть никаких побочных эффектов, для такой функции не имеет смысла возвращать void. Объявление такой функции диагностируется.

чистый
...
Поскольку чистая функция не может иметь никаких побочных эффектов, для такой функции не имеет смысла возвращать void. Объявление такой функции диагностируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...