我正在学习指针,以及如何将它们用于向对象发送数组(大小未指定)。最后,我试图学习如何使用运算符重载,而不是在C++中使用“向量”来添加和多重数组。传递给对象时获取数组的长度
予定义的命名向量类,如下所示,
class vector
{
private:
int len;
int *pvec;
}
public:
vector(int array[])
{
len = sizeof(array)/sizeof(*array);
cout<<len<<endl;
pvec = new int[len+1];
for(int i = 0;i<len;i++)
{
pvec[i] = *(array + i);
}
}
void display()
{
cout<<"[";
for(int i = 0;i<len;i++)
{
cout<<pvec[i];
if(i < len-1)
{
cout<<",";
}
}
cout<<endl;
}
};
和我声明的类矢量的一个目的如下
int vec1[] = {1,2,3,4};
vector v(vec1);
当我尝试使用构件来显示在向量中的元素功能为
v.display();
输出如下
2
[1,2]
但你可以看到该矢量的长度为4,但是在输出时,显示为2,如果我尝试以显示主阵列的长度
cout<<sizeof(vec1)/sizeof(*vec1)<<endl;
的长度显示为4,但是如果我将同一阵列传递给对象,则显示为2.
如果有人能指出此程序中的错误,我将不胜感激。
请在提问前使用搜索 – Drop
这不是我的问题,我知道“sizeof”不能用于指针。我开始知道数组是作为指向对象的指针传递的。 –
'数组作为指针传递'不是真的。这更复杂。阅读重复数据删除线程中的答案,而不是其头文件,这里都有解释。关于它的许多重复问题和答案还有很多。奖金:尝试搜索“数组指针衰减”。请享用。 – Drop