C++ fn1(const Datatype& n)

来源:百度知道 编辑:UC知道 时间:2024/05/04 05:45:32
有函数:fn1(const Datatype& n);
形参中声明调用n的引用,但又是常量,不能修改值,引用作为形参不是为了可以改变实参的值吗?这样声明不是矛盾了吗?

这里的引用不是为了改变实参的值,而是为了避免生成不必要的对象。
如果不采用引用,在调用函数的时候,就会新生成一个Datatype的对象,然后调用其拷贝构造函数进行初始化,产生了时间和空间的开销,并且对于一些自定义类来说还会有资源复制的问题。
而采用引用后,实际上传递的只是一个指针,就不会有以上的问题。
正因为采用引用并不是想要改变实参的值,因此加上const避免误修改。