Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

継承したクラスのメンバ変数はどこに配置されるか

タグ: C++
struct Base
{
	char a;
	int b;
};

struct Derived : Base
{
	int c;
};

このような構造体Derivedがあったとき、基底クラスBaseのメンバ変数abDerivedのメンバ変数cの記憶域の「前」にくる(a、b、c)か「後ろ」にくる(c、a、b)か。

↑のケースだけ考えると、DerivedからBaseに型変換したときでも先頭アドレスをそのまま使える分「前」の方が良さげに思えるが

基底クラスの部分オブジェクトが最派生オブジェクトの中で割り当てられる順序は,規定しない。

『JISX3014:2003』では「規定されていない」

多重継承や仮想クラスの存在を考えると、C++でこれを規定するのは面倒だし、そもそも無駄なことなのだろう。

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/26-e54d1bc2
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。