gpt4 book ai didi

c++ - 瞬时变量的值未分配与传递给构造函数的值相同

转载 作者:行者123 更新时间:2023-11-30 04:44:00 26 4
gpt4 key购买 nike

我正在做一个与插入排序相关的问题(这不是我的问题)但我遇到了以下问题。

(问题从这里开始)我创建了一个构造函数,其中将 5 传递给 size 变量。但是在构造函数中分配 i cout<<this->size; 后它显示 1 但我期待 5

class InsertionSort{
public:
int array[];
int size;
InsertionSort(int *array, int size);
void sort();
void displayArray();
};

InsertionSort::InsertionSort(int array[], int size){
this->array[size];
this->size= size;
for(int i=0; i<size; i++){
this->array[i]= array[i];
}
//here is the cout
cout<<"size "<<size<<endl;
cout<<"This->size "<<this->size<<endl;
}

我很期待 size 5
This->size 5
但它正在给予 size 5
This->size 1
你可以查看我的main()功能:

main() {
int arr[]= {1,5,4,8,3};
InsertionSort a(&arr[0], 5);
}

当我用这些值创建对象时:

InsertionSort a(&arr[1], 5);

分配给 this->size 的值在 arr[1] 处变为 5 i-e 值

请指正我做错的地方。

最佳答案

定义

int array[];

类的内部应该在类定义的末尾,除非你设置了一个固定的大小如果你想要它的动态大小,通过声明它来使用动态分配

int *array;

在构造函数中,使用

this->array = new int[size];

至于线

this->array[size];

没有任何意义..

关于c++ - 瞬时变量的值未分配与传递给构造函数的值相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com