cc
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
<
2025年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
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
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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 邏輯坐標 設備坐標 屏幕坐標 客戶區坐標(2509)
2.?空間中直線和三角面片求交(2442)
3.?C# winform 實現(不規則)窗體或者控件的拖動(2416)
4.?保存Graphics對象到Bitmap對象 [轉](2206)
5.?如何在Dll中導出STL類(1940)
評論排行榜
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
醒目西西
閱讀(595)
評論(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 © 醒目西西
精品国产一区二区三区久久久狼
|
国产无套内射久久久国产
|
久久综合色之久久综合
|
日韩电影久久久被窝网
|
久久精品一本到99热免费
|
久久超乳爆乳中文字幕
|
91性高湖久久久久
|
亚洲精品无码久久久久
|
激情久久久久久久久久
|
久久综合给久久狠狠97色
|
99热成人精品免费久久
|
97精品国产97久久久久久免费
|
久久综合九色综合久99
|
久久亚洲国产精品成人AV秋霞
|
99久久中文字幕
|
久久天天婷婷五月俺也去
|
热久久这里只有精品
|
久久久久亚洲AV成人片
|
亚洲性久久久影院
|
久久e热在这里只有国产中文精品99
|
一本色道久久综合狠狠躁
|
开心久久婷婷综合中文字幕
|
久久精品国内一区二区三区
|
久久精品国产乱子伦
|
性做久久久久久久久
|
久久精品国产亚洲Aⅴ香蕉
|
国内精品久久久久
|
久久精品人人做人人爽97
|
中文国产成人精品久久不卡
|
久久国产AVJUST麻豆
|
久久人人青草97香蕉
|
国产99久久久国产精免费
|
久久国产精品99久久久久久老狼
|
亚洲欧美成人综合久久久
|
中文字幕无码久久人妻
|
噜噜噜色噜噜噜久久
|
囯产极品美女高潮无套久久久
|
性做久久久久久久久浪潮
|
久久精品一本到99热免费
|
综合久久国产九一剧情麻豆
|
亚洲伊人久久精品影院
|