通过参照传递尖锐对象
Passing pointed object by reference
本文关键字:对象 更新时间:2023-10-16
我有这个功能:
int foo(bar const&);
我想像这样使用它:
bar a;
foo(a);
这里不会发生任何副本。
但是如果我这样称呼它:
bar* a = new bar(); //not about dynamic allocation, I know it is not good
foo(*a);
在foo(*a);
,我会失去一些表现吗?喜欢不必要的复制?
这两种情况下都不会发生复制。例如,您可以通过删除 bar
的复制构造函数轻松确认这一点:
bar(bar const&) = delete; // cannot be copied
bar& operator=(bar const&) = delete; // cannot be reassigned
这将导致编译器错误,以防复制任何柱线对象。
不,不会有副本。给定一个值a
类型为 T*
,表达式 *a
的类型为 T&
- 即你正在传递一个引用。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象