cc
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
<
2025年5月
>
日
一
二
三
四
五
六
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
7
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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 實現(不規則)窗體或者控件的拖動(2407)
4.?保存Graphics對象到Bitmap對象 [轉](2202)
5.?如何在Dll中導出STL類(1934)
評論排行榜
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 © 醒目西西
91精品国产9l久久久久
|
久久棈精品久久久久久噜噜
|
日韩欧美亚洲综合久久影院d3
|
国产精品成人无码久久久久久
|
无码任你躁久久久久久
|
精品久久久久久中文字幕人妻最新
|
久久se精品一区二区影院
|
99久久精品免费看国产一区二区三区
|
91精品国产91久久
|
久久99久久99精品免视看动漫
|
久久国产精品免费一区二区三区
|
久久人人爽人人澡人人高潮AV
|
国产日产久久高清欧美一区
|
久久久国产乱子伦精品作者
|
日韩欧美亚洲国产精品字幕久久久
|
久久66热人妻偷产精品9
|
婷婷国产天堂久久综合五月
|
天天影视色香欲综合久久
|
成人资源影音先锋久久资源网
|
一本久久综合亚洲鲁鲁五月天
|
色综合久久久久综合99
|
久久精品国内一区二区三区
|
欧美精品久久久久久久自慰
|
久久国产乱子伦免费精品
|
亚洲国产天堂久久久久久
|
国产A级毛片久久久精品毛片
|
久久久久亚洲精品无码蜜桃
|
无码日韩人妻精品久久蜜桃
|
韩国三级大全久久网站
|
久久亚洲AV成人无码国产
|
久久久噜噜噜久久中文字幕色伊伊
|
久久av高潮av无码av喷吹
|
热99re久久国超精品首页
|
精品久久一区二区三区
|
久久香蕉一级毛片
|
国产精品福利一区二区久久
|
7777久久亚洲中文字幕
|
久久久91精品国产一区二区三区
|
97久久久久人妻精品专区
|
国内精品久久久久影院免费
|
99久久国产免费福利
|