- 論壇徽章:
- 0
|
20可用積分
我發(fā)現(xiàn)下面這個(gè)程序會(huì)崩潰掉:
- struct s:enable_shared_from_this<s>{
- int i;
- s():i(11){}
- shared_ptr<s> GetS(){return shared_from_this();}
- };
- int main(void){
- s obj;
- shared_ptr<s> ps=obj.GetS();
- printf("%d\n",ps->i);
- return 0;
- }
復(fù)制代碼 ---------------------------------
我所了一下,網(wǎng)上說(shuō)enable_shared_from_this的對(duì)象創(chuàng)建也必須用shared_ptr。但是沒(méi)有仔細(xì)說(shuō)為什么? 我改成了下面這樣就可以了,不會(huì)崩潰:
- int main(void){
- shared_ptr<s> sobj(new s);
- s& obj=*sobj;
- shared_ptr<s> ps=obj.GetS();
- printf("%d\n",ps->i);
- return 0;
- }
復(fù)制代碼 我的問(wèn)題是: 我知道我們不能在構(gòu)造函數(shù)里面調(diào)用shared_from_this(),那么我s obj的時(shí)候,weak_ptr還沒(méi)有設(shè)置嗎?
能否簡(jiǎn)單解釋一下? |
|