我有一个带有以下声明的函数:
void cleanValid(int valid[][4], int &size, int index);
在执行此函数时,我需要设置另一个计数器,该计数器等于引用传递的整数大小。我尝试过这样的事情:
int count;
count = size;
如果我没记错的话,当我更改count的值时,它也会改变size的值。我不能发生这种情况。我如何将大小的值复制到计数中并使它们保持独立?
答案 0 :(得分:12)
不,你错了。当您从引用中读取非引用变量时,您不会在两者之间建立任何类型的链接。那时你将拥有size
值的独立副本,没有别的。
如果想要影响size
的值,则必须使用对它的引用:
int& count = size;
/* ... */
count= 32; /* This will change size, too. */
答案 1 :(得分:3)
如果您不想更改size
,为什么不通过值/ const引用?
void cleanValid(int valid[][4], int size, int index);
或
void cleanValid(int valid[][4], const int &size, int index);
在两个选项中,确保 size
不会更改 - 让编译器处理它。
答案 2 :(得分:2)
int count = size
将大小的值复制到计数中。如果您在修改副本时更改计数,则大小将不受影响。