【发布时间】:2012-03-20 10:41:12
【问题描述】:
假设我有以下内容:
class MyClass
{
// ...
}
void doSomething (MyClass instance)
{
// Is instance passed by reference or by value (copied)?
}
void main ()
{
MyClass instance = MyClass();
doSomething(instance);
}
doSomething() 中的 instance 是通过引用传递的吗?还是该类在内存中重复?还是别的什么?
【问题讨论】:
-
幕后发生了什么?整个对象是否在内存中重复?
-
你得看看复制构造函数做了什么。
-
you param
instance在这种情况下由编译器定义的复制构造函数构造。 -
希望你有一个默认的构造函数,否则 MyClass() 将无法工作。
-
C++ 在上述情况下调用复制构造函数并将其传递。它是一个浅拷贝。如果你想要一个深拷贝,你需要在你的课堂上覆盖它。
标签: c++ pass-by-reference pass-by-value