C++ 如何在另一个函数中访问局部变量?

C++ 如何在另一个函数中访问局部变量?,c++,class,C++,Class,我刚刚经历了一次面试,面试中有人问我如何才能将函数的局部变量访问到其他函数。 代码流- class A{ public: void fun1(int a){ int local_var=a; } void fun2(){ // here i want to use local_var of fun1 //you are not allowed to do any changes either in fun1

我刚刚经历了一次面试,面试中有人问我如何才能将函数的局部变量访问到其他函数。 代码流-

class A{
    public:
    void fun1(int a){
       int local_var=a;
    }
    
    void fun2(){
        // here i want to use local_var of fun1
        //you are not allowed to do any changes either in fun1 and class
        // however you can do anythingh in fun2.
    }
  
}
有没有办法做到这一点。

如果函数当前未执行,则局部变量不存在,即使如此,它们也只在非常狭窄的范围内“存在”

这里的
local\u var
是一个只在
fun1
执行期间出现的短期
int
。这个功能一完成,它就消失了

fun2()
无法访问它,因为它当时不存在。即使您在
fun1()
中调用
fun2()
,它仍然没有访问权限,因为
fun2()
有它自己的不同的本地作用域

如果希望共享某些内容,则需要类上的属性(如果该属性应在该类的单个成员中共享),或
静态变量(如果该属性在所有成员之间共享)

你可能的意思是:

A类{
公众:
int m_a=0;
无效fun1(内部a){
m_a=a;
}
void fun2(){
//你能在这里用吗
}
}
如果函数当前未执行,则局部变量不存在,即使如此,它们也只在非常狭窄的范围内“存在”

这里的
local\u var
是一个只在
fun1
执行期间出现的短期
int
。这个功能一完成,它就消失了

fun2()
无法访问它,因为它当时不存在。即使您在
fun1()
中调用
fun2()
,它仍然没有访问权限,因为
fun2()
有它自己的不同的本地作用域

如果希望共享某些内容,则需要类上的属性(如果该属性应在该类的单个成员中共享),或
静态变量(如果该属性在所有成员之间共享)

你可能的意思是:

A类{
公众:
int m_a=0;
无效fun1(内部a){
m_a=a;
}
void fun2(){
//你能在这里用吗
}
}

如果
local\u var
fun1
返回时超出范围,并且您不允许修改函数,很明显,您无法读取任何其他范围中的值。现在,如果您愿意触发UB,则可以在
fun2
中添加一个类似的
int
堆栈变量,而无需对其进行初始化,在
fun1
之后立即调用
fun2
,可能会得到
local\u var
的原始值作为“垃圾”值。如果
local\u var
超出范围,那么
fun1
返回的那一刻就不允许修改函数,很明显,您无法读取任何其他作用域中的值。现在,如果您愿意触发UB,则有可能在未初始化的情况下将类似的
int
stack变量添加到
fun2
,并在
fun1
之后立即调用
fun2
,最终可能会得到
local\u var
的原始值作为“垃圾”价值