【发布时间】:2018-11-17 18:59:47
【问题描述】:
(C++) 你好,我在声明对象时遇到了问题,让我们先看看:
class arr1D
{
protected:
int size;
int *arr;
public:
arr1D( int a[] ):size(sizeof(a)/sizeof(a[0])), arr(new int[size])
{
for(int i = 0; i < size; i++)
{
arr[i] = a[i];
}
}
arr1D( int siz = 10 ):size(siz), arr(new int[size])
{
for( int i = 0; i < size; i++)
{
arr[i] = 0;
}
}
friend ostream & operator<<( ostream &,const arr1D &);
};
int main()
{
//arr1D *a1 = new arr1D;
//cout << *a1;
//prints "arr: 0 0 0 0 0 0 0 0 0 0 size: 10"
return 0;
}
ostream & operator<<( ostream &_return, const arr1D &a)
{
_return << "arr: ";
for(int i=0;i<a.size;i++)
{
cout << *(a.arr+i) << " ";
}
_return << "size: " << a.size;
return _return;
}
我想声明一个包含整数数组的对象 像这样:
arr1D a1[] = {1,2,3,4,5}; // pseudo-code
这应该打印出这样的内容:
arr: 1 2 3 4 5 size: 5
感谢您的帮助!
【问题讨论】:
-
arr1D( int a[] )将不起作用,a在此上下文中是一个指针并且丢失了大小,看看std::vector是如何做到的,甚至使用std::vector代替 -
我还没有使用过矢量,现在我正在尝试以这种方式解决它。有什么想法吗?
-
不相关,析构函数在哪里?
-
“我还没用过矢量”现在开始使用
vector永远不会太早。忘记[]数组的存在。你也不需要new来创建对象。std::vector<int> a1 = { 1, 2, 3, 4, 5 };就是你所需要的
标签: c++ arrays class c++11 pointers