C++ c++;重载运算符动态和静态数组

C++ c++;重载运算符动态和静态数组,c++,arrays,pointers,C++,Arrays,Pointers,我有一个具有私有数组和指针的类。我有3个构造函数,一个是复制构造函数,另一个将指向数组的指针作为参数。例如,我重载运算符,假设ptr是HugeInteger类中的成员,则存在两种未定义的行为 对于默认构造函数,使ptr指向本地数组。与所有局部变量一样,此数组的作用域仅在其声明的函数中。因此,当默认构造函数返回成员变量时,ptr是“悬空的” 对于复制构造函数,您不分配ptr可以指向的内存。因此,当索引它时,您正在索引一个未定义的内存位置 至于您的问题,它与默认构造函数基本相同。您可以指定指针指向

我有一个具有私有数组和指针的类。我有3个构造函数,一个是复制构造函数,另一个将指向数组的指针作为参数。例如,我重载运算符,假设
ptr
HugeInteger
类中的成员,则存在两种未定义的行为

对于默认构造函数,使
ptr
指向本地数组。与所有局部变量一样,此数组的作用域仅在其声明的函数中。因此,当默认构造函数返回成员变量时,
ptr
是“悬空的”

对于复制构造函数,您不分配
ptr
可以指向的内存。因此,当索引它时,您正在索引一个未定义的内存位置


至于您的问题,它与默认构造函数基本相同。您可以指定
指针
指向本地数组
arr
。当函数返回时,数组不再存在,因此指针指向未使用的内存,这些内存可能已被其他函数使用。另外,您在那里所做的不是创建动态数组,而是在

int * pointer;
int arr[40]={0};
pointer = arr;
指针将是一个40字节的数组。此数组不是动态分配的,将在函数结束时完全删除。将您的功能更改为:

int* random()
{
    int * pointer = new int[40];
    cout << "Random function: ";
    for(int j = 0; j < 40; j++){
        pointer[j] = rand()%10; cout << pointer[j];
    }
    cout << endl;
    return pointer;
}
int*random()
{
int*指针=新的int[40];

你能给我们看一下你的随机函数吗?什么是
num1
num2
?什么是函数
random
?你需要显示它们的定义。顺便说一下,你可能想看一下。谢谢,我会尝试计算出来的our@user2001019我的建议是停止使用指针和C风格的数组,转而使用。明白了,谢谢你的支持我们的回应