嗨,我尝试为类创建一个模板来打印数组中的值。
#include<iostream>
using namespace std;
template <typename T>
class Array{
public:
Array(T array[], int arraysize){
size=arraysize;
_array=new T[size];
}
~Array(){
delete[] _array;
}
void print(){
for(int i=0; i<size; i++){
cout<<_array[i]<<' ';
}
}
private:
T *_array;
int size;
};
int main(){
int array1[5]={1,2,3,4,5};
Array<int> a(array1,5);
a.print();
float array2[5]={1.012, 2.324, 3.141, 4.221, 5.327};
Array<float> b(array2,5);
b.print();
string array3[]={"Ch1","Ch2","Ch3","Ch4","Ch5"};
Array<string> c(array3,5);
c.print();
return 0;
}
这是代码,我想知道出了什么问题,因为它会打印出随机数。
最佳答案
该代码使用 new
创建模板的类成员 _array
,但不会将其初始化为任何内容,这就是为什么会打印出随机垃圾。
构造函数确实接收参数数组
,并使用该参数传递初始化的数组。但是,构造函数完全忽略该参数,并且不对其执行任何操作。
显然,您的意图是将模板构造函数作为参数接收的数组内容复制到 _array
中。但该代码丢失了。
array
参数的内容不会自行复制到 _array
中。您必须编写代码才能做到这一点。
关于c++ - 使用模板类-C++ 打印数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39501095/