共享引用

#共享引用
a=3  #变量引用对象3
b=a  #b引用与a相同的对象
print(a)
print(b)

a="xx"
print(a) #a引用了新的对象
print(b) #b仍引用原对象

#在原处修改
l1=[1,2,3]
l2=l1
print(l1)
print(l2)

l1[0]=0  #改变l1引用对象中的一个元素
print(l1)
print(l2)#l2引用对象也被修改了
#如果不期望这种现象可以使用拷贝l2=l1[:]

#相等
l=[1,7,9]
m=l
print(l==m)#2个对象的引用值是否相等
print(l is m)#2个对象的引用是否是同一个对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
共享指针和共享引用都是用于解决资源管理的问题,但它们有一些区别。 共享指针是通过std::shared_ptr<T>来实现的,它是一个模板类,用于管理一个类型为T的对象。当一个std::shared_ptr<T>对象被创建时,它会创建一个计数器来记录有多少个std::shared_ptr<T>指向同一个对象。每当一个新的std::shared_ptr<T>指向对象时,计数器会加1,当std::shared_ptr<T>被销毁时,计数器会减1。当计数器为0时,对象会被自动销毁。这个过程中,所有指向同一个对象的std::shared_ptr<T>都会被通知该对象的状态。 共享引用是通过std::shared_ptr<T>&来实现的。它也是一个模板类,用于管理一个类型为T的对象。与共享指针不同的是,共享引用并不拥有对象所有权,它只是指向一个已经存在的std::shared_ptr<T>对象。当一个std::shared_ptr<T>对象被创建时,它会创建一个计数器来记录有多少个std::shared_ptr<T>&指向同一个对象。每当一个新的std::shared_ptr<T>&指向对象时,计数器会加1,当std::shared_ptr<T>&被销毁时,计数器会减1。当计数器为0时,对象不会被销毁,因为它仍然被std::shared_ptr<T>指向。这个过程中,所有指向同一个对象的std::shared_ptr<T>&都会被通知该对象的状态。 因此,共享指针和共享引用的主要区别在于所有权的管理方式。共享指针拥有对象的所有权,可以控制对象的生命周期,而共享引用只是指向一个已经存在的对象,不拥有对象的所有权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值