無論您如何繼承基類(私有或受保護或公共),我都會發現無處不在基類的私有成員永遠不會繼承於派生類中。基類的私有成員是否始終在C++的派生類中繼承?
但下面的問題讓我很困惑。我不知道爲什麼這個程序的輸出是80.它應該是1個字節(這是C++中空類的大小),因爲私有成員永遠不會被繼承。
#include<iostream>
using namespace std;
class base
{
int arr[10];
};
class b1: public base { };
class b2: public base { };
class derived: public b1, public b2 {};
int main(void)
{
cout << sizeof(derived);
return 0;
}
您看到了錯誤的。基類中的所有內容都由派生類型繼承。 – juanchopanza 2014-10-02 12:58:02
私有成員在派生類中是繼承的,但不是* visible *。 – 2014-10-02 12:59:24
「基類中的所有東西都是派生類型繼承的」我會說:所有基類**中的所有東西都被派生類型繼承。這就是爲什麼你有80個字節 - sizeof(b1)+ sizeof(b2) – borisbn 2014-10-02 13:06:12