通过引用和指针C ++传递参数

时间:2015-06-18 09:29:00

标签: c++ function pointers reference

我正在查看代码片段,我有这个序列。

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中?

4 个答案:

答案 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引用,所以是的,如果您更改myVariablex也将更改

您可以将引用视为别名,myVariable->z只是x的另一个名称。

答案 1 :(得分:1)

是。当你将变量从一个地方“传递”到另一个地方时,你可以在任何地方使用指针或引用,所以你实际上在任何地方都使用相同的变量。

g()中,您将引用返回到z,然后在f()中将此引用保留为z。此外,当您致电f()时,您甚至不会复制myVariable,而是复制地址(以指针的形式),因此您实际上会修改z您在myVariable中的A.cpp变量的成员。

答案 2 :(得分:1)

是的,因为变量地址被传递,函数中x的任何变化都会改变调用函数的变量的值。指针的两个参数指向相同的内存位置。所以改变一个值就改变了其他人自动估价。

答案 3 :(得分:0)

无论何时通过引用或地址传递变量,对被调用函数中该变量的任何更改都会反映在调用函数中。 要回答您的问题,是对X的任何更改都将反映到myVariable,即使X是私有变量也适用。