我正在查看代码片段,我有这个序列。
class MyVariable {
....
CustomType z;
....
}
A.cpp
调用函数f ( & myVariable)
在包含的文件中,我确实有这个:
B.h
void f ( MyVariable * myVariable);
B.cpp
f( MyVariable * myVariable){
CustomType & x = myVariable ->g();
}
其中g是MyVariable类的方法,实现是:
CustomType & g() {
...
return z; //where you can find z in the class
}
虽然看起来很复杂,所以我的问题是:
对x的任何更改是否反映到用作A.cpp函数调用中的参数的myVariable?
换句话说,如果在B.cpp中,我会这样做:
// change x with some value
这种变化是否也会反映在myVariable中?
答案 0 :(得分:1)
// if there is no "Field No." assigned yet
IF "Field No." = '' THEN BEGIN
// Get the last entry in the table and assign the next number to Field No.
<RecordVariableOfTable>.FINDLAST;
"Field No." := <RecordVariableOfTable>."Field No." + 10;
END;
是对x
z
成员的非const引用,所以是的,如果您更改myVariable
,x
也将更改
您可以将引用视为别名,myVariable->z
只是x
的另一个名称。
答案 1 :(得分:1)
是。当你将变量从一个地方“传递”到另一个地方时,你可以在任何地方使用指针或引用,所以你实际上在任何地方都使用相同的变量。
在g()
中,您将引用返回到z
,然后在f()
中将此引用保留为z
。此外,当您致电f()
时,您甚至不会复制myVariable
,而是复制地址(以指针的形式),因此您实际上会修改z
您在myVariable
中的A.cpp
变量的成员。
答案 2 :(得分:1)
是的,因为变量地址被传递,函数中x的任何变化都会改变调用函数的变量的值。指针的两个参数指向相同的内存位置。所以改变一个值就改变了其他人自动估价。
答案 3 :(得分:0)
无论何时通过引用或地址传递变量,对被调用函数中该变量的任何更改都会反映在调用函数中。 要回答您的问题,是对X的任何更改都将反映到myVariable,即使X是私有变量也适用。