Barbarossa Blog
2025 / 04   «« »»
01
T
 
02
W
 
03
T
 
04
F
 
05
S
 
06
S
 
07
M
 
08
T
 
09
W
 
10
T
 
11
F
 
12
S
 
13
S
 
14
M
 
15
T
 
16
W
 
17
T
 
18
F
 
19
S
 
20
S
 
21
M
 
22
T
 
23
W
 
24
T
 
25
F
 
26
S
 
27
S
 
28
M
 
29
T
 
30
W
 
meaning of mark :: nothing , comment
Pageview

Online Status

Profile
hHandleName = Fe+;



某メーカ勤務の怪しい会社員。
40代に突入しても不惑の域に達しない。

Recent Diary

Recent Comments

RSS & Atom Feed
Barbarossa Blog
RSS1.0 / RSS2.0 / Atom0.3
Kの外部記憶
RSS1.0 / RSS2.0 / Atom0.3
Fe+の子育てログ
RSS1.0 / RSS2.0 / Atom0.3
Fe+の麺類万歳
RSS1.0 / RSS2.0 / Atom0.3
Fe+の千夜一夜
RSS1.0 / RSS2.0 / Atom0.3
Fe+の外部記憶
RSS1.0 / RSS2.0 / Atom0.3
Fe+の自腹 de movie
RSS1.0 / RSS2.0 / Atom0.3
Fe+の逆転MBA
RSS1.0 / RSS2.0 / Atom0.3
転載 no Blog
RSS1.0 / RSS2.0 / Atom0.3
ヘタウマお絵かき
RSS1.0 / RSS2.0 / Atom0.3
チャレンジ英語1000時間
RSS1.0 / RSS2.0 / Atom0.3

«« おやぢの味方 | main | 寝かせてくれ〜 »»
«« カテゴリ内前記事(おやぢの味方) | Fe+の外部記憶 | カテゴリ内次記事(寝かせてくれ〜) »»
2005/08/10
ちょっとお仕事
ほう〜、なるほど。

あまりBarbarossa Blogには仕事の事は書かないようにしているのですが、ネタ的に面白かったので書いてみました。

今日、会社の同僚のMINEタソと仕事をしていてC++のクラスがどのようなサイズになるかというネタになったので調べてみました。

自宅に帰ってからもプログラムを作る男

その1・メンバ変数だけ

class CTest {

int a;
int b;

};


この場合には、単純に構造体と同じでsizeof(CTest) = 8になります。
(モチint=32Bitね)

その2・メンバ関数のみ

class CTest {

void Func( void ){ return; }

};


この場合、sizeof(CTest)は

1バイト

になります。
へぇ〜

その3・仮想関数の場合

class CTest {

virtual void Func( void ){ return; }

};


この場合にはsizeof(CTest)=4になります。
これは仮想関数アドレスを格納する関数ポインタテーブルへのポインタである4バイトが付加されるからという事です。
つまり、仮想関数がいくつ増えても、テーブルへのポインタなので4バイトからは増えません。

その4・staticメンバ変数を持つ場合

class CTest {

static int a;
static int b;

};


この場合にはsizeof(CTest)は

1バイト

になります。

その5・staticメンバ関数を持つ場合

class CTest {

static void Func( void ){ return; };

};


この場合もやっぱり1バイトのようです。

ラスト・staticメンバ変数と仮想関数とメンバ関数を持つ場合

class CTest {

static int a;
static int b;

virtual void VirtualFunc( void ){ return; };
void Func( void ){ return; };

};


・・・・結果は、

4バイト

でした。
どうやら、仮想関数のアドレステーブルへのポインタvptrの4バイトだけになるようです。

ちなみに、staticメンバ変数や、通常のメンバ関数はいくつあっても1バイトのままでした。
さらに上記にように、メモリを消費するようなメンバがいると、その1バイトすらなくなってしまうみたいですね。(オブジェクトとしてはメモリを使わないということかな?)

以上仕事ネタでした。

プログラム知らない方、ごめんなさい〜
posted at 2005/08/10 3:52:26
lastupdate at 2005/08/10 3:57:13
修正
 
Comments

Post your Comment
name
mail
home
comment
文字装飾グラデーション絵文字