C ++参考文献&和记忆

时间:2016-08-30 14:56:12

标签: c++ pass-by-reference

我正在编写代码,我对引用&:

有疑问
class A{
    private:
            int num;
    public:
            void set(const int& a){num = a;}
            void foo(){
                    int a = 4;
                    set(a);
            }
            void print(){
                    cout << num << endl;
            }

};  
int main(){
    A a;
    a.foo();
    a.print();
    return 0;
}

在这种情况下,变量a将在foo()结束时销毁。 set获取引用,以及a的地址并更新num。因此这段代码是错误的(num指向已删除的内存)?或者set,使用(不是地址)设置num?

我使用cout地址anum编辑代码,但它们不同,所以我认为num会复制{的 {1}}。如果我运行代码,一切似乎都有效,但我不确定。

1 个答案:

答案 0 :(得分:2)

您的代码无效,因为代码num = a会获取a的副本。另外,在返回对象内存之前调用set(),因此每个人都有一个副本,并且不会发生任何无效。另外,请记住,num会在课程实例持续时持续,所以不要担心已删除的内存。