c++ - 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”指向一些空内存?
如果是这样,这种情况下普遍接受的标准/解决方案是什么?必须按值传递东西似乎有点疯狂......
解决方案
在这种情况下,按值传递似乎是要走的路。分配一个新的BankRecord
指针也可以。通过引用存储东西不是很好。
但是,如果我没记错的话,您的两个字符串和 int 不会丢失,因为它们存在于堆栈中并且不会被释放。但是bankRecord
还是会丢失。
推荐阅读
- javascript - 映射时如何排除给定键不在给定数组中的对象条目?
- python - 函数中的 While 循环可以使用函数外部定义的变量作为条件吗?我很困惑
- perl - 在 perl 的另一个 dict 中附加 dict
- game-physics - 碰撞侧检测
- html - 垂直对齐在 Chrome 上运行良好,但在 Firefox 上不起作用
- google-apps-script - 一次在 Gmail 线程中搜索多个未读标签的脚本
- postgresql - 有没有办法编写这段代码来避免 PostgreSQL 中来自不同表的中间步骤/视图?
- javascript - 单击“购买按钮”时购物车向我发送电子邮件。PLS
- git - 将 GIT 推送到远程后回滚本地和远程中的所有更改
- linux - 无法将双浮点模块与软浮点模块 riscv 编译器链接