我正在學習指針,以及如何將它們用於向對象發送數組(大小未指定)。最後,我試圖學習如何使用運算符重載,而不是在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