簡體   English   中英

C ++成員數組未初始化

[英]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跨平台問題引起的-值中填充了不正確的指針。

第一:

為什么需要兩次初始化ab 僅使用顯式初始化,或者僅使用標准成員初始化...

derived(size_t num = 1) : a(new unsigned int[num]), 
                          _b(new unsigned char[num])
{
}

這應該可以解決問題。

第二:如果您創建一個derivedbase的實例,則所有派生成員和函數將無用。 除了base的成員和函數,這在這兩個類中都是通用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM