假设你有这样一个函数
bool verifyObject(const myObj& obj);
或者这个
bool verifyObject(const myObj obj);
据我了解,当您在第二种情况下传递类似的内容时,会制作一份拷贝。但是,编译器可能会像第一种情况一样利用常量性来传递。因此,我认为以任何一种方式传递 const 对象都没有区别。
我错了吗?
最佳答案
第二个,从调用者的角度来看相当于
bool verifyObject(myObj obj);
而且,作为声明,这两个是完全等价的:
bool verifyObject(myObj obj);
bool verifyObject(const myObj obj);
所有顶级常量在函数声明中都被忽略。差异仅在定义
期间显现bool verifyObject(const myObj obj)
{
obj.NonConstMethod(); //compiler error!
}
您不能修改函数内部的拷贝,调用者根本不关心它。作为功能实现者,这只是为了您自己的目的。
关于c++ - 传递 const &object 与 const object 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545397/