您能否解釋爲什麼我不能在課堂上使用const
類型?如何在OOP C++中使用Const類型類?
示例代碼:
class Array {
int *Arr;
int n;
public:
Array(int _n = 0) {
Arr = new int[_n];
n = _n;
}
~Array(void) {
delete []Arr;
}
friend void f(const Array &A) {
A.Arr[0] = 3; // why can the Arr[0], Arr[1] be changed the value ?
A.Arr[1] = 4;
// A.n = 10; // can not be changed because of 'const class type'
}
};
void main()
{
Array A(5);
f(A);
}
當我打電話f(A)
,我已經在f
定義的const Array &A
但在void f()
的元件也是可變的,但是當我嘗試與代碼線A.n = 10
,它是不可變的。
也許我應該定義一個const
重載運算符或其他東西,以使Arr
中的所有元素都是不可變的。
問題:如何讓Arr
的元素不可變?
你說所有對象的成員使用const是不可變的。但爲什麼int * Arr是可變的?我可以強制指針int * Arr是不可變的嗎? –
@安徒生:指針不可變。它指向的對象是,因爲'const'只適用於'array'對象。你不能阻止通過指針的可變訪問,但你可以添加'const'成員函數給它們的只讀訪問權限。 –
你能爲我寫下代碼嗎?謝謝 –