在研究osg的时候突然发现一个问题,一个函数参数列表里面居然有一个取地址符号&在类名的右边!
顿时就觉得有点蒙圈,他是长这样的
Node(const Node&,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
感觉很眼熟,想起来在C++primer开篇的书店例子里面也有这个,那时候是长这样的
Sales_item operator+(const Sales_item&, const Sales_item&);
哇,那时候就混过去了没有深究,出来混迟早是要还的,于是开始找答案,最终在一个问答里面找到了应该是正确的回答,这里赋原链接,感谢答主!!https://zhidao.baidu.com/question/1174371866493901019.html
———-华丽的分割
现在来分析一下,上面书店例子应该是省略了具体的形参名字,只写了参数的类型是Sales_item类对象的引用,所以可以改写为
Sales_item operator+(const Sales_item &item, const Sales_item &item);
这样应该就对了,所以不存在&写在变量左边或者右边的区别,区别只是省略写法而已~
那上面应该就能写成
Node(const Node &node,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
了吧~参数是Node类的对象的一个引用。
撒花~