合格为__attribute __((pure))或__attribute __((const))的C ++类构造函数

时间:2018-11-19 13:06:03

标签: c++ attributes pure-function

如果C ++类构造函数只能通过其参数访问数据,是否可以并且应该声明它们为__attribute__((pure))?在什么情况下,他们应符合__attribute__((const))的资格?

1 个答案:

答案 0 :(得分:2)

当您将构造函数限定为pureconst时,GCC会发出警告。这是因为构造函数不会返回任何内容(返回void),并且在此类函数上具有pureconst属性没有多大意义。

请参阅Godbolt演示here

<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 documentation

  

常量
  ...
  因为const函数不能有任何副作用,所以使此类函数返回void没有意义。声明了这样的功能。

     


  ...
  因为纯函数不能有任何副作用,所以使此类函数返回void没有意义。声明了这样的功能。