cc
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
38 隨筆 :: 14 文章 :: 21 評論 :: 0 Trackbacks
<
2025年8月
>
日
一
二
三
四
五
六
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
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 邏輯坐標 設備坐標 屏幕坐標 客戶區坐標(2515)
2.?空間中直線和三角面片求交(2453)
3.?C# winform 實現(不規則)窗體或者控件的拖動(2432)
4.?保存Graphics對象到Bitmap對象 [轉](2214)
5.?如何在Dll中導出STL類(1948)
評論排行榜
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
醒目西西
閱讀(605)
評論(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 © 醒目西西
亚洲天堂久久久
|
色综合久久无码中文字幕
|
久久精品国产亚洲av麻豆小说
|
亚洲一级Av无码毛片久久精品
|
久久综合久久伊人
|
一极黄色视频久久网站
|
久久精品国产清高在天天线
|
久久免费视频观看
|
久久精品国产99久久丝袜
|
欧美一级久久久久久久大片
|
色偷偷久久一区二区三区
|
国产福利电影一区二区三区,免费久久久久久久精
|
亚洲国产精品无码久久九九
|
久久WWW免费人成一看片
|
精品久久久久久无码专区
|
国产亚洲成人久久
|
久久久亚洲欧洲日产国码aⅴ
|
久久精品极品盛宴观看
|
色欲久久久天天天综合网
|
久久这里的只有是精品23
|
久久99精品国产麻豆宅宅
|
久久天天日天天操综合伊人av
|
亚洲欧美久久久久9999
|
久久精品国产91久久综合麻豆自制
|
久久国产乱子伦精品免费强
|
亚洲精品乱码久久久久久久久久久久
|
狠狠色丁香久久婷婷综合五月
|
久久精品国产清自在天天线
|
久久天天躁狠狠躁夜夜网站
|
亚洲午夜无码AV毛片久久
|
久久久艹
|
久久人人爽人爽人人爽av
|
91精品国产高清久久久久久国产嫩草
|
亚洲人成无码网站久久99热国产
|
一本久久久久久久
|
中文字幕亚洲综合久久
|
久久国产色AV免费观看
|
AAA级久久久精品无码片
|
国产亚洲婷婷香蕉久久精品
|
人妻精品久久久久中文字幕一冢本
|
国产精品成人久久久
|