继承和类型数组

时间:2014-07-25 17:48:49

标签: c++ arrays inheritance

我在C ++中有一个非常简单的问题。 假设我将类定义为:

  

类PS       {       私人:

int value;

int m;

public:

PS();
PS(int value, int m);
PS(int m);

};

现在我想定义一个包含这种类型元素的数组。例如,

  

PS t [3];

但是,我希望此数组中的所有元素都具有m = 2。我该怎么办?我假设我必须使用继承一些如何,对吧? 所以例如我不想做这样的事情:

>PS t[3]; 
>t[0].PS(2);
>t[1].PS(2);
>t[2].PS(2);

我想为t的所有元素做一个节目。

3 个答案:

答案 0 :(得分:1)

STL Vector类比c阵列更受欢迎。使用一个,您可以这样做:

std::vector<PS> t(3, PS(2));

答案 1 :(得分:1)

使用构造函数,您只需使用大括号初始化:

PS t[] = { PS(2) , PS(2), PS(2) };

或者按照@ 0x499602D2的建议,因为PS有一个非显式构造函数,只需:

PS t[] = { 2, 2, 2 };

我还建议您使用std::array<>而不是C风格的数组。

答案 2 :(得分:1)

不初始化值是不安全的,但您可以使用C ++ 11功能,该功能允许您直接在类定义中初始化变量:

class PS { 
private: 
  int value;
  int m = 2;

public:
  PS() {};
};

如果您使用的是旧版本的C ++,则可以考虑重载默认构造函数

class PS { 
private: 
  int value;
  int m;

public:
  PS(int _m = 2) : m(_m) {};
};