如果我在 C++ 中有一个包含动态分配数组的结构,例如:
typedef struct foo {
int* p;
} foo;
foo aFoo;
aFoo.p = new int[n];
for(int i = 0; i < n; ++i)
aFoo.p[i] = 0;
如何通过引用函数来传递它,以便函数aFoo.p[]
不能修改存储的值?
如果我声明int func(foo const& aFoo) { ... }
,如果我尝试修改指针aFoo.p
,我会收到编译器错误,但如果我尝试修改,例如aFoo.p[0]
. 我还可以分配一个新指针int* p2 = aFoo.p
并通过它修改值aFoo.p[]
。
int* const& p
如果我只是传递指针,我相信这将是传递and之间的区别const int* const& p
,但我不确定在这种情况下如何在没有在结构定义中将 member 声明p
为 a的情况下执行此操作const int*
(这会导致其他部分的复杂化编码)。