提问人:heretoinfinity 提问时间:3/30/2020 更新时间:3/30/2020 访问量:162
const、type 和 & 在复制构造函数参数中的顺序
Order of const, type and & in copy constructor parameter
问:
我被告知,此处引用的 、 type 和 的顺序无关紧要。我的用户定义类型是 。const
&
PNG
所以我把我的复制构造函数写成:
PNG(const & PNG);
但出现错误:
error: C++ requires a type specifier for all declarations
PNG(const & PNG);
Stackoverflow 上针对此类错误的解决方案不涉及复制构造函数,因此我决定发布一个不同的问题。
当我将其重写为时
PNG(PNG const &);
错误消失了。我错过了什么?复制构造函数是特例吗?
答:
2赞
Vlad from Moscow
3/30/2020
#1
这只是一个无效的语法。删除限定符 const,您将得到
PNG( & PNG);
这没有意义。这与编写指针而不是引用相同
PNG( * PNG);
在这两种情况下,类型说明符都不存在。引用和指针应引用类型说明符。
你可以写
PNG(const PNG & );
或
PNG( PNG const & );
请注意,与指针相反,没有恒定的引用。例如,对于指针,您可以编写
PNG( const PNG * const );
供参考,这样的声明
PNG( const PNG & const );
无效。
根据 C++ 语法,引用是声明符的一部分。例如,您可以写
PNG( PNG const ( & ) );
因为声明符可以括在括号中。
评论
const & PNG
不是一个有效的除数器,引用限定符排在最后,你的意思是.似乎是一个很好的 ole' 错别字。const PNG&
address of
const PNG&