C++返回对象和返回引用

最大的区别在于,返回对象的话会在内存中根据返回的类型开辟一块区域,用返回的值对该内存进行初始化,如果是返回的对象,利用拷贝构造来初始化这个区域,但是这块区域并没有名字,就是说之后用户没办法访问到这个区域,也成为无名变量,它只能在接下来的代码中进行一次性的用途,要不作为参数传递,或者将值打印,再之后就会直接销毁,或者调用析构函数。

而返回引用的话,引用的本质是对裸露的地址的二次包装,它实际返回的还是一个变量或对象的地址,因此如果返回引用不可以返回局部变量的,因为函数在返回之后,该变量就销毁。

以下代码是对运算符*进行重载,返回引用和返回对象有不同的结果。

#include<iostream>
using namespace std;
class A
{
public:
	A() { cout << "A::A()" << endl;}//A构造函数
	A(A& another){cout << "A(A& another)" << endl;}
	~A(){ cout << "~A::A()" << endl;}//A析构函数
	void func(){ cout << "class A::void func()" << endl;}
};
class B
{
public:
	B(A* p) :_p(p){cout &l
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值