c++ - 传递 const &object 与 const object 的区别

标签 c++ constants

假设你有这样一个函数

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/

相关文章:

c++ - 从 std::string *tab[11] 返回 const std::string*&

python - 在 Windows 上静态构建 CPython - 链接问题

c++ - 如何正确链接 boost 正则表达式?

c++ - 无法在 Ubuntu 的 QtCreator 中将 glfw 与 CMake 链接

c++ - 我所在地区的时间相关信息是否有上限?

c++ - 为什么 unordered_map 和 map 提供相同的性能?

c++ - 如何在 C++ 中丢弃 const

python - python 模块常量的重要性

java - Java Web 应用程序中的字符串常量与资源包

c++ - 将 const 引用对象作为参数传递时出现问题,VS 调试器报告 'left of ' .getXCoord' must have calls/struct/union'