cc
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
<
2006年12月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(3)
給我留言
查看公開留言
查看私人留言
隨筆檔案
(38)
2013年3月 (1)
2011年5月 (1)
2011年2月 (3)
2010年3月 (2)
2010年2月 (1)
2010年1月 (4)
2009年12月 (2)
2009年11月 (5)
2009年10月 (4)
2009年7月 (1)
2009年6月 (2)
2009年5月 (2)
2009年4月 (1)
2008年10月 (1)
2008年9月 (1)
2008年8月 (1)
2008年7月 (3)
2007年12月 (2)
2007年7月 (1)
文章分類
(10)
編程相關(9)
(rss)
經典網評(1)
(rss)
文章檔案
(14)
2008年7月 (1)
2006年12月 (13)
相冊
cc
搜索
最新評論
1.?re: 使用 .NET Remoting 實現并行計算 [轉]
評論內容較長,點擊標題查看
--EssaysService rewiew
2.?re: 使用 .NET Remoting 實現并行計算 [轉]
評論內容較長,點擊標題查看
--custom essay writing services reviews
3.?re: 使用 .NET Remoting 實現并行計算 [轉]
評論內容較長,點擊標題查看
--this link
4.?re: C#中new和override區別
THX!
--programmer
5.?re: 數據庫水平分庫框架設計
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
--aaaaaaaaaaaaaaaaaaaa
閱讀排行榜
1.?WINDOWS 邏輯坐標 設備坐標 屏幕坐標 客戶區坐標(2505)
2.?空間中直線和三角面片求交(2439)
3.?C# winform 實現(不規則)窗體或者控件的拖動(2408)
4.?保存Graphics對象到Bitmap對象 [轉](2202)
5.?如何在Dll中導出STL類(1935)
評論排行榜
1.?數據庫水平分庫框架設計(2)
2.?C++中extern “C”含義深層探索(1)
3.? C#中new和override區別 (1)
4.?CString和string的互相轉換 (1)
5.?如何在Dll中導出STL類(1)
一道騰訊的面試題
class?a
{
word?m_a1;
word?m_a2;
a(){m_a1=1;m_a2=2;}
void?fun(){printf("%d,%d",m_a1,m_a2);}
}
class?b
{
dword?m_a3;
b(){m_a3=3;}
void?fun(){printf("%d",m_a3);}
}
main()
{
a?a;
b?*pb;
pb=b*(&a);
pb->fun();
}
輸出是什么?
posted on 2006-12-17 15:30
醒目西西
閱讀(590)
評論(2)
編輯
收藏
引用
所屬分類:
編程相關
評論
#
re: 一道騰訊的面試題
2006-12-17 15:30
醒目西西
結果是1
pb=(b*)(&A); 將A的地址傳給了pb,并強制轉化為b類的地址
pb->fun(); 調用b 的fun()方法,不過此時ma_3,是a類的ma_1,所以輸出1
你可以改一下程序運行就知道了
#include <stdio.h>
class a
{
char m_a1;
char m_a2;
public:
a(){m_a1=1;m_a2=2;}
void fun(){printf("%d,%d",m_a1,m_a2);}
};
class b
{
char m_a3;
public:
b(){m_a3=3;}
void fun(){printf("%dggggg",m_a3);}//可以看出是調用了該方法
};
void main()
{
a A;
b *pb;
pb=(b*)(&A);
pb->fun();
}
回復
更多評論
#
re: 一道騰訊的面試題
2006-12-17 15:30
醒目西西
在win32和32位編譯器的環境下,結構體(struct和class)中的數據域是按聲明的先后順序,“向上生長”的。就是說若結構體A中按先后聲明了兩個域a、b,則存放b的地址大與存放a的地址!注意,有些編譯器為了提高在32位系統中對內存的訪問速度,所以使用了內存對齊技術--結構體中的各個域是按4字節對齊的!
我們假設樓主提供的題目如下:
#include <stdlib.h>
#include <stdio.h>
class a {
short m_a1;
short m_a2;
public:
a() {
m_a1 = 1;
m_a2 = 2;
}
void fun() {
printf("%d,%d", m_a1, m_a2);
}
};
class b{
int m_a3;
b() {
m_a3 = 3;
}
public:
void fun() {
printf("%d", m_a3);
}
};
int main() {
printf("sizeof a, b = %d %d\n", sizeof(a), sizeof(b));
a a;
b *pb;
pb = (b*)(&a);
pb -> fun();
}
就是說,a的大小是8字節,b的大小是4字節!
而b::fun()就是按int的格式輸出結構體中的前四個字節!所以輸出1!
但是,若沒有使用內存對齊技術!上面的問題就麻煩了!
a和b 的大小都是4字節!
a a+2
1 2 -> (2 << 16) | 1
所以應該輸出:
131073
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
C++基本類型對象化的一個方案
[轉]delegate 與 多線程
去騰訊時遇到的一個面試題
騰訊最新面試題,算法高手請進
一道騰訊的面試題
c#多線程教學(4):線程池和異步編程
c#.net多線程編程教學(2):Thread類
使用 .NET Remoting 實現并行計算 [轉]
[C#學習]在多線程中如何調用Winform
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 醒目西西
欧美日韩精品久久久免费观看
|
伊人色综合久久天天人手人婷
|
久久青青国产
|
色婷婷狠狠久久综合五月
|
日韩欧美亚洲综合久久影院Ds
|
一级女性全黄久久生活片免费
|
亚洲AV伊人久久青青草原
|
一本色道久久99一综合
|
久久美女人爽女人爽
|
伊人久久无码精品中文字幕
|
成人综合伊人五月婷久久
|
久久免费视频6
|
久久精品国产亚洲一区二区
|
人妻无码精品久久亚瑟影视
|
久久精品无码一区二区WWW
|
99久久精品国内
|
99久久夜色精品国产网站
|
国产精品激情综合久久
|
国产精品禁18久久久夂久
|
精品综合久久久久久97
|
青草久久久国产线免观
|
国产精品热久久无码av
|
国产69精品久久久久777
|
日产精品久久久久久久
|
亚洲欧美成人久久综合中文网
|
99久久精品免费
|
伊人久久综合热线大杳蕉下载
|
久久99精品久久只有精品
|
人妻无码久久一区二区三区免费
|
无码任你躁久久久久久老妇
|
国产精品久久久久乳精品爆
|
国产美女久久久
|
欧美精品一区二区精品久久
|
狠狠色婷婷综合天天久久丁香
|
久久99国产亚洲高清观看首页
|
久久久久女人精品毛片
|
亚洲精品无码久久久久
|
欧洲人妻丰满av无码久久不卡
|
久久婷婷五月综合国产尤物app
|
色欲综合久久中文字幕网
|
伊人久久大香线蕉综合Av
|