2

__attribute__((pure))如果 C++ 类构造函数只能通过其参数访问数据,那么它们是否可以并且应该被声明?在哪些情况下他们应该被认定为__attribute__((const))

4

1 回答 1

2

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

在此处查看 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
...
因为 const 函数不能有任何副作用,所以这样的函数返回 void 是没有意义的。诊断出声明这样的功能。

pure
...
因为纯函数不能有任何副作用,所以这样的函数返回 void 是没有意义的。诊断出声明这样的功能。

于 2018-11-19T13:34:06.503 回答