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

小明思考

高性能服務器端計算
posts - 70, comments - 428, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

考考你對C++對象模型的理解

Posted on 2005-12-06 09:34 小明 閱讀(2508) 評論(12)  編輯 收藏 引用 所屬分類: C/C++
這是小明我自編的題目。

1.請在不運行程序的情況下,說出下面的程序運行后會崩潰么?如果是,在哪一行。

 1 #include <stdio.h>
 2 #include <memory.h>
 3 class Test 
 4 
 5 public
 6         Test() 
 7         { 
 8                 memset(this,0,sizeof(*this)); 
 9         } 
10         int s; 
11         void test() 
12         { 
13                 printf("test()\n"); 
14         }
15         void test1() 
16         { 
17                 printf("test1():%d\n",this->s); 
18         }
19         virtual void test2() 
20         { 
21                 printf("test2()\n"); 
22         }
23 }; 
24 
25 int main() 
26 
27         Test *s; 
28         s->test(); 
29         s->test2(); 
30         s->test1(); 
31         return 0
32 }

2 .修改一下,又是在哪一行呢?

 1 #include <stdio.h>
 2 #include <memory.h>
 3 class Test 
 4 
 5 public
 6         Test() 
 7         { 
 8                 memset(this,0,sizeof(*this)); 
 9         } 
10         int s; 
11         void test() 
12         { 
13                 printf("test()\n"); 
14         }
15         void test1() 
16         { 
17                 printf("test1():%d\n",this->s); 
18         }
19         virtual void test2() 
20         { 
21                 printf("test2()\n"); 
22         }
23 }; 
24 
25 int main() 
26 
27         Test *= new Test(); 
28         s->test(); 
29         s->test1(); 
30         s->test2(); 
31         return 0
32 }

3.再修改一下,情況會如何呢?
 1 #include <stdio.h>
 2 #include <memory.h>
 3 class Test 
 4 
 5 public
 6         Test() 
 7         { 
 8                 memset(this,0,sizeof(*this)); 
 9         } 
10         int s; 
11         void test() 
12         { 
13                 printf("test()\n"); 
14         }
15         void test1() 
16         { 
17                 printf("test1():%d\n",this->s); 
18         }
19         virtual void test2() 
20         { 
21                 printf("test2()\n"); 
22         }
23 }; 
24 
25 int main() 
26 
27         Test s ;
28         s.test(); 
29         s.test1(); 
30         s.test2(); 
31         return 0
32 }




最后說一下答案吧
第一題是在29行,第二題在30行,最后一題不報錯。
如果你不知道為什么,建議看看<<Inside the c++ Object Model>>

Feedback

# re: 考考你對C++對象模型的理解  回復  更多評論   

2005-12-06 13:19 by 芋頭
這題挺有意思的,呵呵。
再加一個:
int main()
{
Test s ;
Test* s1 = &s;
s1->test();
s1->test1();
s1->test2();
return 0;
}

# re: 考考你對C++對象模型的理解  回復  更多評論   

2005-12-22 10:00 by LiaoLiaoPro
簡單。

Test()
{
memset(this,0,sizeof(*this));
}

  構造函數中,把對象所在的內存塊置為了0。而對象中含有虛函數,所以指向虛函數表的vptr指針也被置為了0。

  前兩種調用都是通過指針進行調用,用指針或引用(樓上的例子)調用虛函數時會通過vptr指針間接調用,通過對象調用則不會。所以1,2出錯。3不出錯。

在1中,樓主把test1放在test2后調用,是為了讓test2出錯吧,呵呵。因為test1放在上面的話,在test1中就出錯了(引用了this指針,但this卻是個野指針。)

# re: 考考你對C++對象模型的理解  回復  更多評論   

2006-03-03 17:00 by 笑笑生
題很好啊,贊一個

# re: 考考你對C++對象模型的理解  回復  更多評論   

2006-03-09 16:35 by september_29
我的QQ是 417522707 精通了 Cpp Obj Model,但是苦于無人交流,周圍的都是群,不知道我在說什么的研究生,希望能與你交個朋友

# re: 考考你對C++對象模型的理解  回復  更多評論   

2006-03-10 14:48 by init
也可以s1->Test::test2(), 則不會根據vptr指針來invoke function.

# re: 考考你對C++對象模型的理解  回復  更多評論   

2006-03-11 10:15 by init
例子1跟有無memset()沒關系,根本沒產生對象,test()和test1()代碼獨立于Test對象,而test2()必須由對象中的vptr來調用(除非使用Test::test2())。如果要強調memset的影響,main()中這樣: Test*s = new Test()

# re: 考考你對C++對象模型的理解  回復  更多評論   

2006-05-31 09:11 by Neo
建議以后出題的時候的類名用 A,B,C,
函數名用fun,

不覺得 test() & Test() 很像嗎,還是在故意考驗大家的眼力?

# re: 考考你對C++對象模型的理解  回復  更多評論   

2008-04-30 11:02 by 瘋子
用這句一切都OK了memset((char *)this + 4,0,sizeof(*this) - 4);

# re: 考考你對C++對象模型的理解  回復  更多評論   

2008-07-26 08:02 by lengbufang
哦哦!!

# re: 考考你對C++對象模型的理解  回復  更多評論   

2009-08-08 01:45 by 周龍亭
不要用C語言的方法來寫C++程序

# re: 考考你對C++對象模型的理解  回復  更多評論   

2009-09-03 14:12 by yyu
用這句一切都OK了memset((char *)this + 4,0,sizeof(*this) - 4);
C++里沒有規定vptr的存放位置,所以你句修改對于不同的編譯器可能出錯

# re: 考考你對C++對象模型的理解  回復  更多評論   

2009-09-16 11:54 by yilog
你們用的是什么編譯器?第一個程序,那s沒指向,直接在28行就宕掉了,不是這樣的么,我用的vs2005是這樣的。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产视频一区三区| 欧美在线视频不卡| 欧美视频一区二| 久久综合久久久| 久久免费一区| 欧美二区在线观看| 国产精品二区在线| 国产一区二区久久久| 国产一区视频网站| 亚洲国产视频一区二区| 亚洲人成网站999久久久综合| 亚洲第一区在线| 一本色道久久综合狠狠躁的推荐| 一区二区欧美视频| 欧美在线一区二区三区| 狂野欧美激情性xxxx欧美| 欧美gay视频| 一区二区三区欧美日韩| 午夜一区在线| 欧美日韩一区二区三区免费看| 国产伦理一区| 亚洲精品三级| 久久精品99国产精品日本| 亚洲国产日韩一级| 99在线|亚洲一区二区| 久久激情综合| 欧美日韩在线观看一区二区三区| 国产主播一区二区三区| 亚洲美女在线看| 久久日韩粉嫩一区二区三区| 亚洲精品一区二区在线| 久久精品视频亚洲| 国产精品呻吟| 一区二区欧美日韩| 欧美 日韩 国产在线 | 亚洲精品乱码久久久久久蜜桃麻豆| 欧美中文字幕在线| 欧美日一区二区在线观看| 尤物九九久久国产精品的特点| 亚洲小少妇裸体bbw| 亚洲福利视频一区| 久久精品国产免费观看| 国产精品亚洲综合天堂夜夜| 好吊一区二区三区| 午夜精品久久久久久久男人的天堂| 欧美激情国产高清| 欧美专区第一页| 国产精品午夜久久| 亚洲免费一级电影| avtt综合网| 欧美日韩一区二区三区四区在线观看| 亚洲国产精品视频一区| 麻豆国产精品777777在线| 午夜精品视频| 国产精品自拍视频| 午夜影视日本亚洲欧洲精品| 日韩视频在线一区| 欧美日韩在线播放三区四区| 欧美精品videossex性护士| 在线精品视频一区二区| 久久理论片午夜琪琪电影网| 欧美中文字幕| 国产一区二三区| 久久久久久亚洲精品杨幂换脸| 欧美在线视频一区二区| 红桃视频成人| 美女诱惑一区| 免费国产自线拍一欧美视频| 亚洲精品乱码久久久久久| 亚洲欧洲三级| 欧美午夜不卡视频| 午夜视频在线观看一区| 午夜精品久久久久久久久久久久久| 国产精品日本一区二区| 久久久精品一区| 欧美jizz19性欧美| 99精品国产高清一区二区| 99国产精品99久久久久久粉嫩| 欧美午夜宅男影院在线观看| 欧美一区国产一区| 久久婷婷国产麻豆91天堂| 日韩视频不卡| 性欧美激情精品| 亚洲黄色在线视频| 亚洲视频二区| 加勒比av一区二区| 亚洲日本电影| 国产日韩欧美三级| 亚洲福利视频在线| 国产精品一区二区你懂得| 久久这里有精品视频| 欧美国产欧美综合| 欧美中文字幕视频| 欧美1区视频| 久久国产精品99精品国产| 久热精品视频在线观看一区| 亚洲视频一区二区| 久久久噜噜噜久久人人看| 亚洲天堂av高清| 久久人人97超碰国产公开结果 | 欧美高清视频一区二区| 在线一区观看| 亚洲欧美日韩在线高清直播| 精品动漫av| 亚洲网站啪啪| 亚洲日本成人女熟在线观看| 亚洲欧美日韩精品久久| 在线观看视频一区二区| 日韩午夜三级在线| 狠狠色香婷婷久久亚洲精品| 亚洲乱码国产乱码精品精可以看 | 欧美一区二区三区喷汁尤物| 另类综合日韩欧美亚洲| 午夜激情一区| 美女精品在线观看| 欧美在线关看| 亚洲午夜精品17c| 亚洲激情自拍| 久久精品国产欧美激情| 亚洲专区免费| 欧美精品一区二区三区四区 | 欧美不卡激情三级在线观看| 国产精品九九久久久久久久| 亚洲国产精品美女| 精品电影在线观看| 欧美在线亚洲| 欧美在线免费观看视频| 欧美视频不卡| 亚洲人成人一区二区三区| 91久久精品www人人做人人爽 | 国产伦精品免费视频| 日韩网站在线看片你懂的| 亚洲精品国产精品国自产在线 | 国产精品久久久久77777| 亚洲欧洲精品一区二区三区 | 国产视频一区免费看| 国产精品99久久久久久www| 99热在这里有精品免费| 欧美激情欧美狂野欧美精品 | 久久久久国产成人精品亚洲午夜| 国产精品区一区二区三| 亚洲已满18点击进入久久| 亚洲一区久久久| 国产精品高潮粉嫩av| 亚洲天堂成人| 久久精品视频免费播放| 国产午夜精品美女毛片视频| 性欧美超级视频| 欧美国产亚洲另类动漫| 亚洲人成网站777色婷婷| 欧美人牲a欧美精品| 91久久一区二区| 在线视频你懂得一区二区三区| 欧美日韩一区二区免费视频| 亚洲一二三区在线观看| 久久精品国产精品亚洲综合| 国产一区二区三区四区| 六十路精品视频| 99国产精品久久久| 欧美中文在线观看国产| 欲色影视综合吧| 欧美国产一区视频在线观看| 日韩一级精品| 久久精品国产精品亚洲综合| 亚洲国产成人精品久久久国产成人一区 | 国产综合激情| 美日韩精品视频| 亚洲看片网站| 久久国产毛片| 亚洲精品男同| 国产精品有限公司| 久久尤物视频| 亚洲欧美久久| 影音先锋久久资源网| 欧美国产视频在线观看| 亚洲综合精品四区| 蜜月aⅴ免费一区二区三区| 99视频热这里只有精品免费| 国产欧美一级| 欧美不卡福利| 欧美一区二区三区另类| 亚洲欧洲午夜| 久久久精品动漫| 亚洲性夜色噜噜噜7777| 激情综合激情| 国产精品美女久久久久aⅴ国产馆| 久久精品亚洲一区二区| 亚洲精品在线视频| 麻豆91精品| 久久国产黑丝| 亚洲性av在线| 99国产精品自拍| 在线观看日韩av电影| 国产精品揄拍500视频| 欧美激情一二区| 蜜臀av国产精品久久久久| 校园激情久久| 亚洲视频日本| 9久re热视频在线精品| 亚洲福利视频一区|