青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

力為的技術(shù)博客

聯(lián)系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

當(dāng)把子類對(duì)象的指針賦值給父類時(shí),不需要cast。shared_ptr也這樣, 比如:

 

class A
{
public:
A();
virtual ~A();
}
;

class B: public A
{
public:
 B();
 
virtual ~B();
}
;

typedef shared_ptr
<A> APtr;
typdef shared_ptr
<B> BPtr;

BPtr pB(
new B());
APtr pA 
= pB;

這是期望的行為。繼續(xù):

class C
{
public:
  C();
  
~C();

  
const APtr& GetB() const return m_pB; }
private:
  BPtr m_pB;
}
;


問題出在哪里?

 

---------------------------------------------
m_pB轉(zhuǎn)換為APtr類型時(shí),產(chǎn)生臨時(shí)對(duì)象。C::GetB()返回的是臨時(shí)對(duì)象的引用。


一般情況下,沒人會(huì)寫這樣的程序。返回臨時(shí)對(duì)象的引用時(shí)候,編譯器也會(huì)有warning。假如,忽略了warning,就有可能發(fā)生杯具。

posted on 2011-04-01 18:09 力為 閱讀(2844) 評(píng)論(11)  編輯 收藏 引用 所屬分類: 4. C++ FAQ

評(píng)論

# re: 失足于shared_ptr[未登錄] 2011-04-01 21:32 vincent
加個(gè)const呢?  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-01 21:38 空明流轉(zhuǎn)
呃。難道你到現(xiàn)在都不曉得咩。。。  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr[未登錄] 2011-04-01 21:48 vincent
話說加個(gè)const,編譯器會(huì)做處理嗎?  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-01 22:11 yiphon
為何會(huì)返回臨時(shí)對(duì)象? 不是返回m_pB的引用嗎?
  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-02 09:53 溪流
返回的不是臨時(shí)對(duì)象的引用。
之所以 warining,是因?yàn)?m_pB 會(huì)隨著 C 對(duì)象的析構(gòu)而消亡,此時(shí),之前有這個(gè)返回的引用就成了孤魂野鬼了。m_pB 在類外的地位就是一個(gè)局部變量。  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr[未登錄] 2011-04-02 11:35 vincent
贊一個(gè)= =昨天沒仔細(xì)看題意。。我又2了。。
返回了m_pB做類型轉(zhuǎn)換的時(shí)候產(chǎn)生的臨時(shí)變量的ref,就像ls所說,孤魂野鬼,這并不是調(diào)用者對(duì)這個(gè)函數(shù)的期望
  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-02 11:42 空明流轉(zhuǎn)
還好,這個(gè)一般也會(huì)獲得返回值優(yōu)化的。
一般牽涉到類型轉(zhuǎn)換,返回的時(shí)候都要小心。  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-02 14:21 力為
補(bǔ)上正確的寫法:

class C
{
public:
C();
~C();

const BPtr& GetB() const { return m_pB; }
private:
BPtr m_pB;
};
  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-10 00:03 flyinghearts
@力為
雖然 B與A存在繼承關(guān)系,但BPtr與APtr可不存在這層關(guān)系,要返回APtr的引用,就必須要先創(chuàng)建一個(gè)APtr對(duì)像。

APtr pA = pB;
寫成 APtr pA = static_pointer_cast<A>(pB);
比較好吧。
  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-11 09:27 力為
@flyinghearts
我想shared_ptr隱式轉(zhuǎn)換的行為在于與pure ptr保持一致。
所以盡管,BPtr與APtr不存在繼承關(guān)系,仍然可以有APtr pA = pB;
上面的錯(cuò)誤確實(shí)是由于隱式轉(zhuǎn)換產(chǎn)生的臨時(shí)對(duì)象引起的。即使成 APtr pA = static_pointer_cast<A>(pB); ,仍然有臨時(shí)對(duì)象產(chǎn)生。  回復(fù)  更多評(píng)論
  

# re: 失足于shared_ptr 2011-04-13 23:22 flyinghearts
@力為

因?yàn)锽Ptr與APtr不存在繼承關(guān)系,二者間的轉(zhuǎn)換一定會(huì)產(chǎn)生臨時(shí)對(duì)象。
寫成 APtr pA = static_pointer_cast<A>(pB);
顯示轉(zhuǎn)換對(duì)象,是給自己提個(gè)醒,也方便以后維護(hù)代碼。

  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线视频在线播放完整版免费观看 | 一本久久a久久免费精品不卡| 欧美大片免费观看在线观看网站推荐| 午夜精品久久久久久久99水蜜桃| 亚洲影音一区| 久久成人免费| 亚洲高清免费视频| 亚洲人成小说网站色在线| 一本久道久久综合婷婷鲸鱼| 亚洲视频欧美在线| 久久一区二区三区超碰国产精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美激情国产精品| 国产麻豆综合| 这里是久久伊人| 久久综合网hezyo| 一区二区三区波多野结衣在线观看| 午夜精品久久久久久| 久久久精品动漫| 国产精品欧美一区二区三区奶水| 一区二区亚洲精品国产| 在线亚洲激情| 亚洲看片网站| 香蕉av福利精品导航| 亚洲另类黄色| 欧美高清视频一区二区三区在线观看| 国产欧美精品国产国产专区| 一二三区精品福利视频| 亚洲欧美成人一区二区在线电影| 欧美日本一区| 欧美一区91| 久久se精品一区二区| 在线观看欧美视频| 欧美1级日本1级| 欧美激情bt| 亚洲欧美在线aaa| 欧美一区二区三区视频免费播放| 一区在线视频观看| 日韩午夜激情| 伊人久久婷婷色综合98网| 噜噜爱69成人精品| 欧美多人爱爱视频网站| 伊人狠狠色j香婷婷综合| 国产精品久久久久久久久久妞妞 | 久久综合影音| 欧美日韩国产小视频在线观看| 亚洲天堂偷拍| 久久人人爽爽爽人久久久| 亚洲日本激情| 午夜精品亚洲一区二区三区嫩草| 亚洲电影免费在线观看| 一本一本久久a久久精品综合妖精| 国产精品av久久久久久麻豆网| 性感少妇一区| 麻豆精品视频在线观看视频| 亚洲图片在区色| 欧美专区日韩视频| 亚洲欧美日韩国产一区二区| 欧美不卡激情三级在线观看| 亚洲一区在线直播| 欧美日韩国产一区二区三区地区| 久久婷婷人人澡人人喊人人爽| 国产精品久久久久久久7电影 | 日韩网站在线| 国产亚洲一区二区三区在线播放| 亚洲午夜久久久久久久久电影院| 精品成人乱色一区二区| 久久久久久国产精品mv| 老牛影视一区二区三区| 国产精品草草| 亚洲午夜一区二区三区| 中文欧美日韩| 国产精品精品视频| 中文欧美字幕免费| 亚洲欧美日韩另类| 欧美日韩国产首页在线观看| 亚洲精品国产无天堂网2021| 正在播放亚洲| 国产精品美女久久久久aⅴ国产馆| 日韩视频在线观看| 午夜精品婷婷| 国产一区免费视频| 久久精品国产99国产精品| 久久夜色精品国产噜噜av| 黑人巨大精品欧美一区二区小视频 | 欧美理论电影网| 日韩亚洲视频在线| 亚洲在线观看| 狠狠爱www人成狠狠爱综合网| 裸体一区二区| 亚洲人成网站777色婷婷| 亚洲一级特黄| 国产精品成人播放| 久久躁狠狠躁夜夜爽| 亚洲激情婷婷| 久久精品国产亚洲一区二区三区| 亚洲电影自拍| 国产精品外国| 欧美国产第一页| 久久久国产精品亚洲一区| 亚洲美女福利视频网站| 久久综合亚洲社区| 久久av老司机精品网站导航| 99视频精品| 亚洲免费成人av| 精品999久久久| 国产精品多人| 国产精品高潮久久| 欧美午夜激情视频| 国产精品私拍pans大尺度在线 | 久久成人精品视频| 欧美尤物一区| 久久亚洲视频| 欧美激情久久久久| 欧美午夜三级| 蜜臀91精品一区二区三区| 亚洲调教视频在线观看| 亚洲高清激情| 日韩一区二区精品视频| 伊人久久婷婷| 亚洲精品欧洲| 亚洲综合第一页| 欧美在线观看视频在线| 99riav国产精品| 亚洲激情专区| 久久久成人网| 亚洲欧美国产不卡| 欧美激情视频网站| 国产欧美丝祙| 激情欧美日韩| 亚洲主播在线观看| 久热这里只精品99re8久| 亚洲第一偷拍| 亚洲曰本av电影| 久热精品在线| 国产精品一二三四区| 精品88久久久久88久久久| 一区二区三区四区五区在线 | 亚洲电影免费观看高清完整版在线 | 国产精品久久久久永久免费观看| 国产亚洲一区在线播放| 亚洲激情啪啪| 久久久人人人| 亚洲专区在线| 国产精品都在这里| 日韩天堂在线观看| 久久蜜臀精品av| 99re8这里有精品热视频免费| 久久er精品视频| 欧美三级乱人伦电影| 亚洲国产高潮在线观看| 午夜激情综合网| 99国产精品私拍| 欧美人与性动交α欧美精品济南到| 国产亚洲精品久久久| 一区二区三区不卡视频在线观看| 蜜桃精品一区二区三区| 欧美伊久线香蕉线新在线| 国内精品久久久久久影视8| 久久av一区二区三区漫画| 小辣椒精品导航| 依依成人综合视频| 亚洲国产欧美在线人成| 欧美色精品天天在线观看视频| 亚洲一区二区综合| 久久精品国产清高在天天线| 亚洲激情视频网| 亚洲欧美中文日韩在线| 亚洲黄页一区| 欧美freesex交免费视频| 久久九九电影| 亚洲欧洲精品天堂一级| 欧美成人综合| 欧美成人激情视频| 亚洲午夜av| 亚洲欧美日韩中文视频| 怡红院精品视频| 欧美激情在线狂野欧美精品| 免费成人av在线看| 亚洲午夜国产一区99re久久 | 欧美成年人视频| 欧美日韩另类综合| 午夜精品一区二区三区电影天堂| 亚洲午夜精品17c| 在线不卡中文字幕| 亚洲视频导航| 亚洲国产成人av| 亚洲欧美综合精品久久成人| 亚洲高清三级视频| 亚洲一区在线免费| 亚洲高清久久网| 亚洲资源av| 在线视频精品一区| 欧美一区二区视频在线观看| 亚洲国内高清视频| 午夜欧美大尺度福利影院在线看 | 久久xxxx| 久久精品午夜| 国产精品久久777777毛茸茸| 欧美激情一区三区|