通过引用传递指向的对象
Passing pointed object by reference
我有这个功能:
int foo(bar const&);
我想这样使用它:
bar a;
foo(a);
这里不会发生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
如果正在复制任何条形对象,这将导致编译器错误。
不,不会有副本。给定类型 T*
的值 a
,表达式 *a
的类型为 T&
- 即您正在传递一个引用。
我有这个功能:
int foo(bar const&);
我想这样使用它:
bar a;
foo(a);
这里不会发生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
如果正在复制任何条形对象,这将导致编译器错误。
不,不会有副本。给定类型 T*
的值 a
,表达式 *a
的类型为 T&
- 即您正在传递一个引用。