• <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>

            Error

            C++博客 首頁 新隨筆 聯系 聚合 管理
              217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:27:19
            class IRoot  沒有虛析構
            class Lv1  有虛析構
            class Lv2

            root是根,下面都是繼承關系
            這樣有風險沒?
            vczh.Iskandar<vczh@163.com>  16:25:41
            這樣你delete IRoot
             

             
            就不會運行析構函數
             
            C++一切沒有父類的類,只要是你打算被繼承,都要由虛析構函數
             
            董一凡(65226002)  16:26:10
            讓他們全部private 繼承自IRoot

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:28:04
            有沒啥好辦法

            我不想在徐基類中
            搞函數體實現
            好丑
            vczh.Iskandar<vczh@163.com>  16:26:28
            private繼承也沒用
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:28:29
            那怎么辦
            vczh.Iskandar<vczh@163.com>  16:26:37
            說不定那個IRoot就是那個類自己給出去的
             
            而且就算你private了
             
            dynamic_cast也是可以用的
             
            董一凡(65226002)  16:26:55
            那無所謂了啊

            vczh.Iskandar<vczh@163.com>  16:26:56
            你只要在IRoot寫一個空的虛析構函數就行了
             
            別的什么都不需要干
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:29:01
            但是這樣如果跨模塊
            董一凡(65226002)  16:27:24
            如果你case到了派生類,那自然就會調用正確的析構函數了

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:29:19
            iroot相當于編譯了兩次
            vczh.xyz粉(54438159)  16:27:44

            vczh.Iskandar<vczh@163.com>  16:27:46
            不會的
             
            董一凡(65226002)  16:27:52
            準確的說,析構函數要么是公有虛的,或者protected非虛的

            vczh.Iskandar<vczh@163.com>  16:27:53
            你把實現寫在了cpp文件里面
             
            就不會被編譯兩次了
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:30:06
            那如果兩個模塊
            同時需要iroot
            董一凡(65226002)  16:28:32
            只要你不用基類來delete派生類,那析構函數不需要是虛的
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:30:26
            就要都加入cpp
            C++的什么東西都差一點,不完美啊
            VCZH.粉絲數組[5](110086478)  16:31:03
            準確的說,析構函數要么是公有虛的,或者protected非虛的
            effective上看到過,后一種一般什么時候用到 
            vczh四號粉絲(342775210)  16:31:14
            加一個虛析構,又沒啥
            VCZH.粉絲數組[5](110086478)  16:31:49
            其實可以讓編譯器做的 
            vczh.Iskandar<vczh@163.com>  16:32:06
            加一個虛析構,又沒啥  
            VCZH.粉絲數組[5](110086478)  16:32:25
            只要有繼承,編譯器就讓析夠,多省心 
            董一凡(65226002)  16:32:42
            后一種就是,你永遠不能用基類指針來delete派生類

            所以析構函數也就不用是虛的了
            VCZH.粉絲數組[5](110086478)  16:33:11
            比如?場景?看得忘了 
            董一凡(65226002)  16:34:29
            比如你有一大組不同的接口,class A : public I1, public I2, public I3{}
            你有寫函數是這樣子的,fun(I1* i) fun2(I2* i) fun3(I3* i)
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:37:29
            當智能指針遇到這個事情
            vczh.Iskandar<vczh@163.com>  16:35:33
            我所有的類都繼承自Object
             
            董一凡(65226002)  16:35:36
            你的fun只不過是調用幾個接口,而不會管理實際對象的生命周期,那這樣設計就是合理的

            vczh.Iskandar<vczh@163.com>  16:35:38
            所有的接口都繼承自Interface
             
            他們都有虛析構函數
             
            我為了解決這個問題
             
            然后就沒問題了
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:38:12
            嗯,想這樣一個對象
            作為多個接口
            擴散到不同模塊
            偶就用shared_ptr了
            老殘搞不定復雜的生命周期管理
            VCZH.粉絲數組[5](110086478)  16:37:00
            java啊 
            vczh四號粉絲(342775210)  16:37:12
            真的是閑的蛋疼啊
            加一個虛析構,又能怎么樣
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:39:29
            好丑的,,,
            VCZH.粉絲數組[5](110086478)  16:37:36
            其實我們游戲服務器也是用一個object的 
            vczh四號粉絲(342775210)  16:37:43
            只要碰到繼承,就必須虛析構
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:40:25
            比如你動態庫
            提供某個接口
            董一凡(65226002)  16:38:38
            哎,比如你的接口本本來就只是幾個函數。連成員都沒有,那干嘛還加個虛析構,去加一個指針大小呢

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:40:49
            然后又是顯示加載
            董一凡(65226002)  16:38:58
            尤其是編譯器對這種類還能夠直接優化掉

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:41:16
            這樣雖然那個虛析構是空的
            但是實際上
            exe和dll里邊
            都有一份實現
            我理解的沒錯吧
            我覺得這個現象
            不好
            vczh.xyz粉(54438159)  16:40:32

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:43:02
            囧,我再去好好理解理解去
            應該如果只用指針
            是可以只有一份實現的
            董一凡(65226002)  16:41:24
            v大,你既然所有類繼承自object,那你在做ui的時候,大可以模范qt了,在基類里加一個slot的概念,所有ui對象就都可以接收發過來的消息了

            跨dll就千萬要小心了,你別在dll里new東西,在另一個dll里delete,會出錯的

            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:44:22
            跨dll就千萬要小心了,你別在dll里new東西,在另一個dll里delete,會出錯的

            這個不一定出錯
            和運行庫相關
            董一凡(65226002)  16:42:57
            嗯,對的,但這是一個當地晦澀的角落

            一起搞明白,最好的辦法是避免
            ooseven(147340642)  16:43:08
            我都是用heapalloc,沒有這個顧慮
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:45:15
            流氓
            話說vs2012以后
            運行庫就是用heapalloc了
            所以
            這個問題,不是問題了
            ooseven(147340642)  16:43:51
            是嗎?
            你確定?
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:45:58
            如果我沒記錯
            好像在哪看到過
            VCZH.粉絲數組[5](110086478)  16:44:19
            exe和dll會各有一份? 
            ooseven(147340642)  16:44:43
            我重載了所有的容器,傳入一個自己的Allocator<_Kty>
            這個Allocator<_Kty>,里面就是heapalloc
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:47:24
            顯示加載dll
            就是說,dll的代碼和exe的代碼是分開的
            假設exe和dll里邊有相同的對象
            那么他們必須都包含虛基類的完整實現
            也就是說虛基類在exe和dll里邊
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:48:29
            分別都編譯了一次
            那么exe和dll里邊關于虛基類的機器碼
            就有相同的兩份

            vczh四號粉絲(342775210)  16:47:28
            動態鏈接啊,怎么會有兩份代碼
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:49:41
            exe一份 dll一份
            vczh四號粉絲(342775210)  16:47:50
            除非你dll是靜態鏈接的
            然后有蛋疼的靜態鏈接exe了一份
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:49:56
            不然肯定鏈接錯誤
            我們遇到過一次bug
            和這個類似
            就是單例模式
            在exe和dll的地址
            不一樣
            后來發現就是哪個instance
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:51:06
            在exe和dll各有一份實現
            VCZH.粉絲數組[5](110086478)  16:49:06
             你那是export吧 
            不用兩份代碼 
            一份就行 
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:51:28
            只有一份編譯都過不了
            VCZH.粉絲數組[5](110086478)  16:49:37
            直接export就行,單件 
            可以 
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:51:56
            那要把單利放到dll
            然后隱式加載
            不然這邊exe鏈接錯誤
            VCZH.粉絲數組[5](110086478)  16:50:20
            是的 
            嗯 
            好牛逼 
            vczh.Iskandar<vczh@163.com>  16:50:33
            董一凡2013-01-30 16:41:24v大,你既然所有類繼承自object,那你在做ui的時候,大可以模范qt了,在基類里加一個slot的概念,所有ui對象就都可以接收發過來的消息了

            上一次我也是這么做的,這次戒了
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:52:50
            為啥
            vczh.Iskandar<vczh@163.com>  16:50:50
            singleton
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:52:58
            不是很爽么
            vczh.Iskandar<vczh@163.com>  16:51:02
            出事是肯定的
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:53:15

            vczh.Iskandar<vczh@163.com>  16:51:21
            你暴露個變量出來
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:53:45
            單例是惡習
            vczh.Iskandar<vczh@163.com>  16:51:41
            都是要做成函數的
             
            vczh四號粉絲(342775210)  16:51:42
            我發現,public成員是bug神器
            vczh.Iskandar<vczh@163.com>  16:52:04
            gacui很少有public的變量
             
            vczh四號粉絲(342775210)  16:52:31
            我剛才秒了一下我們的代碼,就發現一個內存泄露
            我都不敢看了
            vczh.xyz粉(54438159)  16:52:46
            這個。。。
            VCZH.粉絲數組[5](110086478)  16:53:03
            太厲害了 
            vczh.Iskandar<vczh@163.com>  16:53:07
            發郵件噴
             
            vczh四號粉絲(342775210)  16:53:13
            我才不噴
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:55:21
            vczh四號粉絲(342775210)  16:52:31
            我剛才秒了一下我們的代碼,就發現一個內存泄露
            我都不敢看了

            你們平時怎么查內存溢出 內存錯誤 內存泄漏什么的?
            vczh四號粉絲(342775210)  16:53:32
            我們平時靠人肉看
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:55:38
            vczh四號粉絲(342775210)  16:53:13
            我才不噴

            噴了就要解決,,,解決就要加班,,,要死,,,
            vczh四號粉絲(342775210)  16:53:44

            vczh.Iskandar<vczh@163.com>  16:53:46
            看source control,誰寫的誰解決
             
            vczh四號粉絲(342775210)  16:53:55
            不是我寫的
            vczh.Iskandar<vczh@163.com>  16:54:05
            賴都賴不掉
             
            vczh四號粉絲(342775210)  16:54:06
            就行了
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:56:22
            我估計這個問題該起來牽扯一票模塊,,,
            vczh.Iskandar<vczh@163.com>  16:54:26
            visual studio打開以下咦annotate哪一行誰checkin進去的直接暴露出來
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:56:33
            不然你就爽快的改了噴人,,,
            SundayTooFar(5048977)  16:54:31
            上個項目, 我秒了一下rpc協議。 結果發現幾十個嚴重問題。 那才鬧騰, 整個項目組加班了兩周。。
            vczh.Iskandar<vczh@163.com>  16:54:43
            = =
             
            web程序
             
            你不招vczh
             
            就不能用C++來寫(逃
             
            VCZH.粉絲數組[5](110086478)  16:55:00
             
            vczh.Iskandar<vczh@163.com>  16:55:12
            用C++來處理字符串
             
            需要有堅定的信念
             
            vczh.xyz粉(54438159)  16:55:20
            各位巨巨都是神眼阿
            vczh.Iskandar<vczh@163.com>  16:55:20
            每一行代碼都要充滿智慧
             
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:57:26
            搞死人
            vczh四號粉絲(342775210)  16:55:31
            要改的代碼,也不多
            只是我不愿意改
            VCZH.粉絲數組[0]<errorcpp@qq.com>  16:57:49
            上午問了沒人理我,asn1有熟的沒
            vczh四號粉絲(342775210)  16:55:43
            改了,他又會改回來
            vczh.Iskandar<vczh@163.com>  16:55:44
            先改后噴
             
            沒有
             
            posted on 2013-01-30 16:57 Enic 閱讀(190) 評論(0)  編輯 收藏 引用 所屬分類: VC路上的坑
            久久人人爽人人爽人人片av高请| 欧洲国产伦久久久久久久| 久久99热这里只有精品国产| 青青草原综合久久大伊人| 久久婷婷五月综合国产尤物app| 国产精品久久久久久吹潮| 久久国产视屏| 无码专区久久综合久中文字幕| 久久福利青草精品资源站免费| 色偷偷88欧美精品久久久| 无码人妻久久一区二区三区免费丨 | 婷婷五月深深久久精品| 久久99热精品| 中文字幕无码久久精品青草 | 久久久久久伊人高潮影院| 国产精品久久成人影院| 久久久久久久免费视频| 久久国产免费直播| 久久久国产乱子伦精品作者| 亚洲国产成人精品女人久久久| 国产国产成人精品久久| 无码人妻久久一区二区三区免费 | 久久婷婷色香五月综合激情| 99热精品久久只有精品| 国产精品久久久亚洲| 久久综合香蕉国产蜜臀AV| 中文字幕亚洲综合久久| 久久久精品人妻一区二区三区蜜桃| 色综合久久天天综合| 久久久久久一区国产精品| 日本WV一本一道久久香蕉| 一本一本久久A久久综合精品| 久久线看观看精品香蕉国产| 亚洲精品国产自在久久| 久久综合丝袜日本网| 亚洲精品无码久久久久久| 久久毛片一区二区| 99热成人精品免费久久| 麻豆一区二区99久久久久| 亚洲av伊人久久综合密臀性色| 久久天天躁狠狠躁夜夜不卡|