这是一个C ++类声明代码段,其中包含一个对我来说没有意义的&符号:
class rimage : public matrix {
public:
rimage( void );
rimage( int, int );
rimage( rimage & );
rimage & operator=( const matrix & A );
rimage & operator=( const rimage & A );
rimage & operator/=( int );
...
rimage( rimage & );
是什么意思?为什么&
在最后?
此片段来自PCNNs上的教科书
这个类声明给我编译问题,所以我需要弄明白。
答案 0 :(得分:4)
声明
rimage ( rimage & )
如果给参数命名,可能更容易解析:
rimage ( rimage & A )
从这一点来看,它更清楚一点,它定义了一个复制构造函数,它通过非rimage
引用接收另一个const
。
更一般地说,当您将参数名称保留在函数声明之外时,它们有时可能会更难读取。例如,这个函数
void DoSomething (int (int))
可能难以阅读,但如果您添加如下参数名称:
void DoSomething (int function(int))
现在你可以更清楚地看到它是一个以另一个函数作为参数的函数。
对于更难的事情,请考虑
void DoSomething (int (&)[5])
使用参数可以更容易地看出它是什么:
void DoSomething (int (&array)[5])
这是一个函数,它接受对五个整数数组的引用。
希望这有帮助!
答案 1 :(得分:0)
答案 2 :(得分:0)
&
表示它是passed by reference的参数。在这种情况下,rimage(rimage&)
是copy constructor的声明。