默认构造函数c++随机数有效

Default constructor c++ Random Number valid?

本文关键字:有效 随机数 c++ 构造函数 默认      更新时间:2023-10-16

我是c++的新手,对默认构造函数不太熟悉。我被要求编写一个名为Stats的类,并在默认构造函数中编写一个构造函数,该构造函数使用随机数生成器生成minValue和maxValue之间的sampleSize int,然后将其存储在名为data[]的数组中。到目前为止,每当我使用默认构造函数时,我只会将它们初始化为零或null。我不知道如何用这些set指令编写默认构造函数,这样我的代码才能正确运行而不会出错。这是我的

#include <iostream>
using namespace std;
class Stats
{
private:
    int sampleSize, minValue, maxValue;
    int data[];
public:
    Stats()
    {
        sampleSize = 0;
        minValue = 0;
        maxValue = 0;
        data[] = sampleSize;
    }
    Stats(int samleSize, int min, int max)
    {
        samplesize = samleSize;
        minValue = min;
        maxValue = max;
    }

到目前为止,我可以告诉您想要在data中保存一个动态大小的int数组,您当前的语法是不正确的,但应该是您想要的。第一个data需要是pointer:

int *data;

然后你的构造函数会看起来像这样:

Stats()
{
    sampleSize = 0;
    minValue = 0;
    maxValue = 0;
    data = NULL;
}
Stats(int samleSize, int min, int max)
{
    sampleSize = samleSize;
    minValue = min;
    maxValue = max;
    data = new int[sampleSize] ;
}

一旦你的类中有了pointer,你还需要有一个destructor,这样你就可以释放与该pointer相关的内存,它应该看起来像这样:

~Stats()
{
  if( NULL != data )
  {
     delete [] data ;
  }
}

这是假设你需要为你的任务坚持动态分配内存,如果你被允许使用std::vector,那么这就变成了一个简单得多的问题,data变成了这个:

 std::vector<int> data ;

并且您根本不需要担心分配,然后当您需要向其添加数据时,只需调用push_back:

 data.push_back( randomNumber ) ;
data[] = sampleSize;

在C++中不是有效语法。不能用它初始化数组。

同时,data[]没有类型。你应该做

int data[];

您还需要首先为data数组分配内存,然后尝试使用随机数生成器将数字放入其中。

您可以使用std::vector进行数据处理。由于并非所有实例的大小都是固定的。

class Stats
{
private:
    int sampleSize, minValue, maxValue;
    vector<int> data;
    ^^^^^^^^^^^^^^^^
public:
    Stats()
    {
        sampleSize = 0;
        minValue = 0;
        maxValue = 0;
        data.reserve(sampleSize); // Just to avoid reallocations.
    }