在 class 中正确使用引用
correct usage of reference in a class
这是我的用法:
void fun_out(int& mkol){
mkol = 3;
}
class refTest{
public:
int pol_as;
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
int main(){
int asl = 46;
refTest testcase(asl); // testcase.pol_as = 46
testcase.fun1(); // testcase.pol_as = 3
printf("testcase.pol_as: %d\n", testcase.pol_as);
}
我需要将 asl
更改为 fun_out
中的值,即在本例中为 3;但是,此代码无法做到这一点。只有testcase.pol_as
从46修改为3。我们有没有一个方法可以改变class之外的int(asl
)或指针值(int* asl_ptr
)w.r.t。此 class?
中函数 (fun1
) 的结果
I need to change asl to the value in fun_out
目前您正在将 asl
的副本存储到数据成员 pol_as
中。这意味着当您从 fun1
内部调用 fun_out
时,它只会影响该副本。因此,为了达到预期的效果,您可以将数据成员 pol_as
作为对 int
的 左值引用,或者您可以直接调用 fun_out
传递 asl
如下图:
方法一
class refTest{
private:
//----v---------->lvalue reference
int &pol_as;
public:
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
方法二
或者直接调用fun_out
传递asl
.
int main(){
int asl = 46;
fun_out(asl);//directly pass asl
std::cout<<"asl: "<<asl;
}
您正在尝试将引用存储在普通数据变量中。您需要 pol_as
作为参考,然后您的代码才能 运行 正常。
这是我的用法:
void fun_out(int& mkol){
mkol = 3;
}
class refTest{
public:
int pol_as;
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
int main(){
int asl = 46;
refTest testcase(asl); // testcase.pol_as = 46
testcase.fun1(); // testcase.pol_as = 3
printf("testcase.pol_as: %d\n", testcase.pol_as);
}
我需要将 asl
更改为 fun_out
中的值,即在本例中为 3;但是,此代码无法做到这一点。只有testcase.pol_as
从46修改为3。我们有没有一个方法可以改变class之外的int(asl
)或指针值(int* asl_ptr
)w.r.t。此 class?
fun1
) 的结果
I need to change asl to the value in fun_out
目前您正在将 asl
的副本存储到数据成员 pol_as
中。这意味着当您从 fun1
内部调用 fun_out
时,它只会影响该副本。因此,为了达到预期的效果,您可以将数据成员 pol_as
作为对 int
的 左值引用,或者您可以直接调用 fun_out
传递 asl
如下图:
方法一
class refTest{
private:
//----v---------->lvalue reference
int &pol_as;
public:
refTest(int& poul):
pol_as(poul){}
void fun1(){
fun_out(pol_as);
}
};
方法二
或者直接调用fun_out
传递asl
.
int main(){
int asl = 46;
fun_out(asl);//directly pass asl
std::cout<<"asl: "<<asl;
}
您正在尝试将引用存储在普通数据变量中。您需要 pol_as
作为参考,然后您的代码才能 运行 正常。