我最近注意到一些代码示例中的const关键字在中间(从可敬的博客站点)转移,如下所示:
X(X const& that) { .../... }
X& operator=(X const& other) { .../... }
这相当于这种更熟悉的语法吗?
X(const X& that) { .../... }
X& operator=(const X& other) { .../... }
以这种方式切换'const'的目的是什么?
答案 0 :(得分:1)
1)放置const
的位置并不重要:const int & == int const &
2)为什么?这是助记规则。
int * const
- 常量指针(const
之后*)
int const *
- 指向常量值的指针( int之后的const
)。
所以,它的一致性。
答案 1 :(得分:0)
这相当于这种更熟悉的语法吗?
是的,这里的两种语法都是等价的。
X(X const& x)
X(const X& x)
这表示x
别名为X
类型的对象,但无法使用 x
更改对象。 (如果你使用一些非const
别名,指针等,它仍然可以修改。)
您应该从右向左阅读:x
是类型为X
的{{1}}对象的别名(或引用)。
我还建议您阅读C++ FAQ: Const Correctness