使用“&”令人困惑的C ++语法

时间:2011-03-15 05:27:25

标签: c++

  

可能重复:
  What is the meaning of & in c++?

这是一个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上的教科书

这个类声明给我编译问题,所以我需要弄明白。

3 个答案:

答案 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)

它是对'rimage'对象的引用

https://isocpp.org/wiki/faq/references

这可能只是让你感到困惑,因为它在这个声明中没有命名。

答案 2 :(得分:0)

&表示它是passed by reference的参数。在这种情况下,rimage(rimage&)copy constructor的声明。