您好,登錄后才能下訂單哦!
class A
{
public:
char a;
virtual void print()
{
cout << "A" << endl;
}
};
class B: public A
{
};
class C : public B
{
void print()
{
cout << "C" << endl;
}
};
int main()
{
cout << sizeof(A) << endl;//8
cout << sizeof(B) << endl;//8
cout << sizeof(C) << endl;//8
system("pause");
return 0;
}
注釋:char占一個字節,而print函數占四個字節,因為是虛函數,里面有虛指針,故大小為四個字節,
考慮字節對齊的話就是8個字節,而B是繼承A的,所以大小也為8字節,C也是;不妨動手試試!
class A
{
public:
char a;
virtual void print()
{
cout << "A" << endl;
}
};
class B : virtual public A
{
};
class C : virtual public B
{
void print()
{
cout << "C" << endl;
}
};
int main()
{
cout << sizeof(A) << endl;//8
cout << sizeof(B) << endl;//12
cout << sizeof(C) << endl;//16
system("pause");
return 0;
}
而若是虛繼承的話,它在當前的大小上再加上4字節,關鍵體現在虛繼承的“虛(virtual)”這個關鍵字上,它也含有虛指針所以要再加上四字節!可以敲代碼試一下。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。