繁体   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