【发布时间】:2012-03-13 02:08:20
【问题描述】:
我有以下方法按值返回本地声明的对象:
Human Human::getLocalDeclaredHuman() {
Human human;
std::cout << &human << std::endl;
return human;
}
我称这个方法为:
Human a;
Human b = a.getLocalDeclaredHuman();
std::cout << &b << std::endl;
std::cout << b.getName() << std::endl;
这是正在运行的程序的输出:
0x22fe58
0x22fe58
约翰·多伊
所以在方法中声明为local的变量human与变量b的地址相同。我认为return-by-value 将创建对象的副本,并且对象 b 具有另一个地址,例如在本地声明的对象 human。
我的问题:
如果这里b和human地址相同,那么按值返回和按引用返回的区别在哪里?
【问题讨论】: