怎麼樣求c 類的大小 轉zhange000

2021-04-13 22:20:42 字數 796 閱讀 9617

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的**與最終生編譯成的**卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作.這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗,是編譯器這方面的乙個具體功能.

那我們先看看乙個例子:

#include

class a {};

class b{};

class c:public a;

class d:public b,public c{};

int main()

;class b;

int b::data1=0;

void mian()

void f(int x);

class b;

int b::xs=0;

void  main(){

a s(10);

s.f(10);

cout<<"sozeof(a)"<10 ,

sizeof(a) 8

sizeof(b) 8

它們的結果均相同,可以看出類的大小與它當中的建構函式,析構函式,以及其他的成員函式無關,只與它當中的成員資料有關.

從以上的幾個例子不難發現類的大小:

1.為類的非靜態成員資料的型別大小之和.

2.有編譯器額外加入的成員變數的大小,用來支援語言的某些特性(如:指向虛函式的指標).

3.為了優化訪問效率,進行的邊緣調整.

4 與類中的建構函式,析構函式以及其他的成員函式無關.

你的c 學的怎麼樣?

1.基本型別 各種型別是怎麼進行預設轉換的,強制轉換和各種cast都有什麼區別,編譯器如何對齊,pack和align是什麼東西 2.運算子 所有運算子的優化級都弄明白了麼?什麼能過載,什麼不能過載,什麼能運算子不會自動繼承交類?templateoperator const a const b 這樣的...

求c 類的大小

初學者在學習物件導向的程式語言時,或多或少的都些疑問,我們寫的 與最終生編譯成的 卻 大相徑庭,我們並不知道編譯器在後台做了什麼工作。這些都是由於我們僅停留在語言層的原因,所謂語言層就是教會我們一些基本的語法法則,但不會告訴我們為什麼這麼做?今天和大家談的一點感悟就是我在學習程式設計過程中的一點經驗...

C 學到怎麼樣的程度才算是達標

c 學到怎麼樣的程度才算是達標?2011年03月02日 網摘 當你能自如的運用資料結構和演算法 tcp ip原理 編譯原理 作業系統原理 資料庫以及win32 api 呼叫 構造自己的c 庫 網路庫 數學庫 測試庫 圖形庫 以及各種引擎,出去畢業應該能在短短半年時間裡薪水至少有7000以上甚至上萬吧...