Redian新闻
>
问一个smart pointer的问题
avatar
问一个smart pointer的问题# JobHunting - 待字闺中
d*t
1
假定有两个smartpointer A和B,
B是由Acopy来的,那么count在A下面是1,在B下面是2.
那么看起来必须要先destruct B然后A才能保证pointer正确delete,是不是?
谢谢!
avatar
a*m
2
refptr? 凉粉拷贝的话应该都是1吧。一份的话应该是2。delete 顺序应该没有关系。

【在 d********t 的大作中提到】
: 假定有两个smartpointer A和B,
: B是由Acopy来的,那么count在A下面是1,在B下面是2.
: 那么看起来必须要先destruct B然后A才能保证pointer正确delete,是不是?
: 谢谢!

avatar
d*t
3

不是啊,copy constructor里面就有++*ref_count;这个显然只能加自己的count,不
能加argument的

【在 a********m 的大作中提到】
: refptr? 凉粉拷贝的话应该都是1吧。一份的话应该是2。delete 顺序应该没有关系。
avatar
B*5
4
谁的copy constructor,同样地址smart pointer就一个吧

【在 d********t 的大作中提到】
:
: 不是啊,copy constructor里面就有++*ref_count;这个显然只能加自己的count,不
: 能加argument的

avatar
d*t
5
No.拥有同一地址的SM可以有很多个

【在 B******5 的大作中提到】
: 谁的copy constructor,同样地址smart pointer就一个吧
avatar
r*g
6
cracking code interview上面那个吗
按照我的理解,B原来那个 count为0,A为2.B的原来那个空间被删除,需要重载=操作
符。

【在 d********t 的大作中提到】
: 假定有两个smartpointer A和B,
: B是由Acopy来的,那么count在A下面是1,在B下面是2.
: 那么看起来必须要先destruct B然后A才能保证pointer正确delete,是不是?
: 谢谢!

avatar
w*e
7
ref_count是pointer,指向同一个地方
所以都一起数的。。

【在 d********t 的大作中提到】
: No.拥有同一地址的SM可以有很多个
avatar
d*t
8
I see.
Thanks!

【在 w******e 的大作中提到】
: ref_count是pointer,指向同一个地方
: 所以都一起数的。。

avatar
B*5
9
我也这么觉得,表达不清或许。。。

【在 w******e 的大作中提到】
: ref_count是pointer,指向同一个地方
: 所以都一起数的。。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。