首页 > 解决方案 > C++ 引用和退出范围

问题描述

我开始掌握 C++ 中的引用,并且我有一个围绕引用和范围的小查询,为此最好创建一个示例:

想象一下,我在“BankDatabase.cpp”中有一个方法,它通过引用获取银行记录并将其添加到数据结构中(也通过引用)。

void AddRecord( BankRecord& bankRecord )
{
    //Add record to data structure by reference
}

如果我运行这样的方法:

void TestAddRecord( BankDatabase& bankDatabase )
{
    BankRecord bankRecord { "John", "Doe", 9999 }
    bankDatabase.AddRecord( bankRecord );
}

在我看来,“bankRecord”超出了范围(它的两个字符串和 int 也是如此),因此在“TestAddRecord”方法结束时从内存中清除,让“bankDatabase”指向一些空内存?

如果是这样,这种情况下普遍接受的标准/解决方案是什么?必须按值传递东西似乎有点疯狂......

标签: c++pointersmemorymemory-managementscope

解决方案


在这种情况下,按值传递似乎是要走的路。分配一个新的BankRecord指针也可以。通过引用存储东西不是很好。

但是,如果我没记错的话,您的两个字符串和 int 不会丢失,因为它们存在于堆栈中并且不会被释放。但是bankRecord还是会丢失。


推荐阅读