[英]c++ member array not initialized
我有以下星座:
class base {...};
class derived : public base
{
public:
unsigned int* a;
derived(size_t num = 1) : a(0), _b(0)
{
a = new unsigned int[num];
_b = new unsigned char[num];
}
private:
unsigned char* _b;
}
通過這樣做,一切都很好:
derived* instance = new derived();
但是這樣做:
base* instance = new derived();
_b保持為0x0,稍后嘗試使用_b時會發生錯誤。
這是怎么回事
更新:
該問題是由Windows / Linux跨平台問題引起的-值中填充了不正確的指針。
第一:
為什么需要兩次初始化a
和b
? 僅使用顯式初始化,或者僅使用標准成員初始化...
derived(size_t num = 1) : a(new unsigned int[num]),
_b(new unsigned char[num])
{
}
這應該可以解決問題。
第二:如果您創建一個derived
為base
的實例,則所有派生成員和函數將無用。 除了base的成員和函數,這在這兩個類中都是通用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.