如果C ++类构造函数只能通过其参数访问数据,是否可以并且应该声明它们为__attribute__((pure))
?在什么情况下,他们应符合__attribute__((const))
的资格?
答案 0 :(得分:2)
当您将构造函数限定为pure
或const
时,GCC会发出警告。这是因为构造函数不会返回任何内容(返回void
),并且在此类函数上具有pure
或const
属性没有多大意义。
请参阅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没有意义。声明了这样的功能。