亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++對象的放置

2019-11-17 05:24:38
字體:
來源:轉載
供稿:網友

  (聲明:本文參考了《深度探索c++對象模型》這本書,我連例子都和此書一樣,
如有人認為是偷的話,還請各位原諒,^_^)
經歷過從c到c++的人,一定想知道c++編譯器是如何安排類的成員的.這里我
大概的作一下介紹,并有一些代碼供你進行測試,希望對大家有點作用吧.
其實這里的標題或許有點大了,簡單的說,類的非static成員是按照聲明的順序
存放在內存區的,而類的static成員和一般的static變量的存儲格式一樣.我不從
簡單的東西入手了,直接從一個相對復雜的多重繼續的例子入手.看下面的代碼:
class Point2d
{
public:
int _x,_y;
virtual f(){}//保證Point2d有個虛擬指針
};
class Point3d:public Point2d
{
public:
int _z;
};
class Vertex
{
public:
virtual void h(){}//保證Vertex3d的第二基礎類有個vptr
int next;
};
class Vertex3d:public Point3d,public Vertex
{
public:
int mumble;
};
Point2d,Point3d,Vertex,Vertex3d的繼續關系能看得出來吧.再看主函數
int main()
{
Vertex3d v3d;
Vertex*pv;
pv=&v3d;
int*x=&v3d._x;//獲取v3d的成員的地址
int*y=&v3d._y;
int*z=&v3d._z;
int*n=&v3d.next;
int*mem=&v3d.mumble;
cout<<"*v3d= "<<&v3d<<endl;//輸出第一個vptr
cout<<"*x= "<<x<<endl;//輸出成員的x的地址
cout<<"*y= "<<y<<endl;//….
cout<<"*z= "<<z<<endl;//…..
cout<<"*pv= "<<pv<<endl;/.輸出第二個vptr
cout<<"*n= "<<n<<endl;//…….
cout<<"*mem= "<<mem<<endl;//……..
return 0;
}
我在vc6.0編譯運行的結果是:
&v3d = 0x0012ff64
x = 0x0012ff68
y = 0x0012ff6c
z = 0x0012ff70
pv = 0x0012ff74
n = 0x0012ff78
mem = 0x0012ff7c
從上面的輸出結果來看,對象是如何布局的就一幕了然了,假如你不信,可以自己可
以試試看,輸出Vertex3d的尺寸瞧一瞧,^_^.注重,Vertex3d內有兩個vptr,假如還
不知道為什么會有的話,建議你先去看看書吧!!

補充:我想到另一個比較直觀的方法,就是利用Placement Operator New(PON)的
方法,相對應的還有Placement Operator Delete.至于這些概念,我就不多說了,^_^.
剛才看到那些地址都是內存中的,但可以利用(PON)把那些地址放倒一個數組中
去,那樣會更直觀,不信,你看著:
#include<iostream.h>
#include<new.h>
class Point2d
{
public:
int _x,_y;//
Point2d(){
_x=10;
_y=20;
}
virtual f(){}
};
class Point3d:public Point2d
{
public:
int _z;
Point3d(){_z=30;}
};
class Vertex
{
public:
int next;
Vertex(){next=40;}
virtual void f(){}
virtual void g(){}
virtual void h(){}
};
class Vertex3d:public Point3d,public Vertex
{
public:
int mumble;
Vertex3d(){mumble=50;}
};
int main()
{
long str[30];
Vertex3d*array=new(str)Vertex3d;
for(int i=0;i<sizeof(Vertex3d)/4;i++)
{
cout<<str[i]<<endl;
}
//這里需要顯示調用Vertex3d的析構函數,
return 0;

}
讓我慢慢說來,這里的一些類,只是添加了構造函數而已,為的是能夠直觀.我定義
了一個數組為的放置Vertex3d對象,類型為long是由于上面的類的每個成員都是四
個字節,而虛擬指針(vptr)也是四個字節,這樣輸出很方便.
Vertex3d*array=new(str)Vertex3d;這條語句就是用了PON方法,在數組str中放置
一個Vertex3d對象,一切都已經做好了,對象的布局就是在數組str中,不妨去看看
str中的內容,這里我就不打算把輸出結果寫出來了,自己調試.有個缺陷就是看不到
virtual函數的函數地址(雖然有其他的方法,但不直觀.vc調試模式下直接就可以看,
或許我會想到辦法的)
就簡單說這么些了,vc編譯器的debug模式下可以直接看到的,更直觀,但我的
目的只是弄懂c++類究竟是如何放置的(我不認為我是在轉牛角尖).


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品小视频| 亚洲国产欧美久久| 精品福利免费观看| 欧美一级电影免费在线观看| 国产精品麻豆va在线播放| 日韩精品视频在线| 中文字幕亚洲图片| 国产男女猛烈无遮挡91| 亚洲娇小xxxx欧美娇小| 精品少妇一区二区30p| 91福利视频在线观看| 亚洲精品国产拍免费91在线| 成人精品一区二区三区| 亚洲天堂av在线免费| 欧美另类精品xxxx孕妇| 久久精品国产91精品亚洲| 在线观看中文字幕亚洲| 国产精品pans私拍| 日本一区二区在线免费播放| 亚洲精品久久久久久久久| 日韩中文第一页| 国产精品xxxxx| 欧美日韩免费网站| 国产精品91免费在线| 欧美成人四级hd版| 日本a级片电影一区二区| 波霸ol色综合久久| 国产成人短视频| 国产日韩欧美影视| 一区二区三区无码高清视频| 国产日本欧美一区| 日韩电影中文字幕av| 川上优av一区二区线观看| 成人av资源在线播放| 久久久国产一区| 欧美一二三视频| 亚洲欧美日本精品| 日韩电视剧在线观看免费网站| 成人97在线观看视频| 在线电影欧美日韩一区二区私密| 国产精品福利片| 日韩成人在线观看| 日韩精品免费电影| 国产精品视频男人的天堂| 欧美日韩亚洲精品一区二区三区| 久久久久久久久久久av| 国产精品自产拍在线观看| 亚洲一区二区免费在线| 亚洲精品国精品久久99热一| 久久综合免费视频| 97成人精品区在线播放| 久久综合九色九九| 国产欧美精品一区二区三区-老狼| 欧美日韩美女视频| 亚洲一区二区久久久| 久久精品亚洲热| 91久久久亚洲精品| 日韩福利视频在线观看| 欧美成人精品一区二区| 国产精品电影一区| 日韩av电影院| 亚洲一区av在线播放| 精品亚洲aⅴ在线观看| 黑人巨大精品欧美一区二区三区| 国产视频精品久久久| www.亚洲男人天堂| 国产日韩av在线播放| 一本色道久久综合亚洲精品小说| 久久久人成影片一区二区三区观看| 国产成人精品综合久久久| 亚洲一品av免费观看| 亚洲美女久久久| 超碰精品一区二区三区乱码| 日韩成人xxxx| 中文字幕成人在线| 91精品视频专区| 午夜精品久久久久久99热软件| 日韩成人激情视频| 国产亚洲一区精品| 亚洲精品视频在线播放| 欧美亚洲成人精品| 国产精品第100页| 欧美午夜片在线免费观看| 亚洲香蕉成人av网站在线观看| 国产亚洲精品美女久久久| 欧美激情亚洲综合一区| 国产精品爽爽爽爽爽爽在线观看| 中文国产成人精品久久一| 欧美亚洲第一页| 日本午夜人人精品| 欧美性猛交xxxx| 欧美中文字幕在线| 日韩资源在线观看| 国产欧美婷婷中文| 亚洲欧美综合区自拍另类| 日韩精品999| 91精品国产自产91精品| 川上优av一区二区线观看| 97国产真实伦对白精彩视频8| 尤物九九久久国产精品的分类| 国产网站欧美日韩免费精品在线观看| 亚洲天堂一区二区三区| 中文字幕欧美专区| 日韩在线中文视频| 色哟哟入口国产精品| 色阁综合伊人av| 欧美日韩国产专区| 亚洲色图欧美制服丝袜另类第一页| yw.139尤物在线精品视频| 国产精品久久久久久久久粉嫩av| 国产精品入口尤物| 黑人巨大精品欧美一区免费视频| 亚洲精品自产拍| 久久精品91久久久久久再现| 亚洲成人激情视频| 97在线看免费观看视频在线观看| 91免费在线视频| 久久精品国产69国产精品亚洲| 欧美黄色片视频| 国产亚洲精品美女| 欧美一区二区大胆人体摄影专业网站| 最近2019中文字幕一页二页| 中文字幕欧美日韩在线| 欧美xxxwww| 亚洲一区二区久久| 亚洲国内精品在线| 亚洲欧洲一区二区三区久久| 亚洲乱码一区av黑人高潮| 日本午夜精品理论片a级appf发布| 日韩高清电影好看的电视剧电影| 日韩网站免费观看高清| 国产精品v片在线观看不卡| 精品国产拍在线观看| 一区二区三区国产视频| 亚洲国产精品久久久久秋霞不卡| 亚洲aa中文字幕| 草民午夜欧美限制a级福利片| xxxxx成人.com| 国产成人精品a视频一区www| 亚洲人成电影网| 国内免费久久久久久久久久久| 黑人巨大精品欧美一区二区免费| 亚洲a成v人在线观看| 成人久久一区二区三区| 久久中文字幕一区| 日韩美女主播视频| 欧美成年人视频网站| 成人深夜直播免费观看| 国产97在线播放| 欧美日韩色婷婷| 国产精品综合不卡av| 一区二区亚洲精品国产| 午夜精品久久久久久久男人的天堂| 国产999视频| 狠狠躁天天躁日日躁欧美| 久久久国产精品视频| 国产精品日日摸夜夜添夜夜av| 国产做受高潮69| 57pao成人国产永久免费| 国产91在线播放九色快色| 91老司机精品视频| 国产z一区二区三区| 992tv在线成人免费观看| 自拍偷拍亚洲欧美|