Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取本地对象的const引用

获取本地对象的const引用
EN

Stack Overflow用户
提问于 2017-11-09 03:56:32
回答 1查看 62关注 0票数 1

考虑到这一点:

代码语言:javascript
运行
AI代码解释
复制
std::vector<std::string> f() //some irrelevant function
{
    std::vector<std::string> tempCol;
...//some more irrelevant stuff
    return tempCol;
}

const std::vector<std::string>& refToLocal = f();

我知道它编译和运行都很完美。我甚至知道,即使在生产代码中也有不同的用法。那么问题是,在函数作用域之后是否必须删除本地对象??引用“附加”如何删除本地对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-09 04:06:25

tempCol (局部变量)在函数完成执行时被销毁。函数的返回值是tempCol的副本。

通常,返回值的生存期作为计算其发生的完整表达式的最后一步结束(在本例中为... = f();),但由于要将其绑定到引用(refToLocal),因此它的生存期将扩展到绑定它的引用的生存期。

当变量refToLocal超出作用域时,它和函数返回值都被破坏,内存被回收。

查看https://stackoverflow.com/a/17903361/2428220,了解C和C++中函数返回值的生存期的更详细说明。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47201231

复制
相关文章
【Kotlin】:: 双冒号操作符详解 ( 获取类的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )
在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 类 , 对象 , 函数 , 属性 的 类型对象 引用 ;
韩曙亮
2023/03/30
4.9K0
【Kotlin】:: 双冒号操作符详解 ( 获取类的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )
C++ const常量对象、常量成员函数和常引用
如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加 const 关键字。
小林coding
2020/03/31
1.4K0
【C++】const对象和const成员
如果我们在定义一个对象之后,不希望在后面对这个对象进行修改,那么我们可以把这个对象声明为const对象。 声明为const对象之后,这个对象的所有数据成员后面都不能被修改!
谙忆
2021/01/21
1.2K0
EasyC++33,引用与const
前文当中说过,我们可以让函数接收一个引用变量,从而免去变量拷贝的开销,达到提升程序运行效率的目的。
TechFlow-承志
2022/08/26
1710
EasyC++33,引用与const
C++对象成员的引用 | 对象成员引用
C++不仅可以在类外引用对象的公用数据成员,还可以调用对象的公用成员函数,但同样必须指出对象名,应该注意所访问的成员是公用的还是私有的,只能访问public成员,而不能访问 private成员。
小林C语言
2021/01/21
2.1K0
C++对象成员的引用 | 对象成员引用
const修饰符的使用(修饰结构体指针,引用外部的const 变量)
const修饰符的使用 //const修饰变量为只读 const int a = 10; a = 20;//是错误的赋值 //指针变量 指针指向的内存 两个不同的概念 char buf[] = "helloworld"; //从左往右看,跳过类型,看修饰那个字符 //如果是*,说明指针指向的内存不能改变 //如果是指针变量,说明指针的指向不能改变,指针的值不能修改 const char *p = buf; char const *p1 = buf; //以上两条语句是等价的,都是修饰指针指向的内存不
lexingsen
2022/02/24
5520
python的对象引用
Every object has an identity, a type and a value. An object’s identity never changes once it has been created; you may think of it as the object’s address in memory. The ‘is‘ operator compares the identity of two objects; the id() function returns an integer representing its identity.
哒呵呵
2018/08/06
1.1K0
再论C++中的const和引用
今天给大家分享一下这段时间学习c++的总结学习:c++里面的const关键字和引用。
用户6280468
2022/03/21
4320
JavaScript的对象引用
在一个函数体内,var变量声明的变量,其作用域只在该函数体内,对于函数体外而言,是不可见的(废话)。
libo1106
2018/08/08
9940
C++中const和非const对象分别调用const和非const成员函数
我们知道c++在类的成员函数中还会隐式传入一个指向当前对象的this指针,所以在test类中,实际的print函数应该是这样的void print(test * this);,这代表一个指向test对象的指针this被传入到了print函数中
早起的鸟儿有虫吃
2023/03/21
1.4K0
C++中const和非const对象分别调用const和非const成员函数
[PHP] 对象和引用
在 PHP 5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。
唯一Chat
2021/06/10
5950
java中的引用对象
referent表示被引用的对象。一个Reference可能有4种状态:Active、Pending、Enqueued、Inactive
爬蜥
2019/07/09
1.7K0
c和c++的区别 (三)const&(引用)和const*(地址)在函数中的应用
一、用普通引用接收返回值 int GetInt(){ int value=10; return value;//返回值通过eax寄存器带回 } int main(){ int &a=GetInt();//错误 //引用初始化的值要能取地址,寄存器没有地址 修改为:const int& a=GetInt(); return 0; } 二、返回局部变量的地址 //不能返回局部变量的地址或引用 int* GetIntPtr(){ int value=
lexingsen
2022/02/24
1.1K0
c和c++的区别 (三)const&(引用)和const*(地址)在函数中的应用
VBA对象模型和对象引用
EXCEL中的各种对象并不是孤立存在的,彼此之间都是有联系和层级关系,对象模型的概念就是用来描述对象之间关系的,构建了一个完整的体系。
无言之月
2019/10/14
2.3K0
VBA对象模型和对象引用
JAVA 引用与对象
参考:https://www.cnblogs.com/perfy/archive/2012/10/16/2726039.html
平凡的学生族
2019/05/25
5250
gradle使用本地maven仓库_gradle引用本地项目
使用gradle编译一个开源项目时,发现下载依赖包比较慢,打开项目下的build.gradle文件:
全栈程序员站长
2022/11/15
2.4K1
gradle使用本地maven仓库_gradle引用本地项目
“不可变的对象”与“不可变的对象引用”
什么是不可变的对象呢?我们都知道String是不可变的,如果有涉及大量的字符串拼接我们最好不要用String,虽然我们在代码中可以这样写: String str = "test"; str = "test1"; 这样写是没有错的,这是不是和我们所说的String类型时不可变的违背了呢?其实不然,我们这里看到str“改变”了值,其实不是不是真正改变了,而是改变了str的引用。我们从下图可以看到当定义String str = "test1"时,Java实际上做了这个操作(我们在这里不讨论String关于使用ne
用户1148394
2018/01/09
1.3K0
“不可变的对象”与“不可变的对象引用”
引用类型、对象拷贝
1.引用类型有哪些?非引用类型有哪些 引用类型 引用类型(对象、数组、函数、正则): 指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,由该位置保存对象。 非引用类型(基本类型) 基本类型值(数值、布尔值、null和undefined): 指的是保存在栈内存中的简单数据段; 2.代码练习 (1)如下代码输出什么?为什么 var obj1 = {a:1, b:2}; var obj2 = {a:1, b:2}; console.log(obj1 == ob
小胖
2018/06/27
7550
【npm】简化本地文件引用路径
2、难以维护,如果我文件路径移动了一下...所有引用的地方都要改 就算你会全局替换,摸摸你的良心说,你心里不慌吗,反正我慌得一匹
神仙朱
2019/08/02
14.7K1
【npm】简化本地文件引用路径
C++的引用与const指针的关系以及各种传递方式
该文介绍了C++中引用和const指针的区别以及它们的用途,包括传递参数的方式、引用的底层实现和返回引用的注意事项。另外,还提到了使用引用作为函数返回值时可能遇到的问题,如返回局部变量的引用和返回引用的注意事项。
s1mba
2018/01/03
8480

相似问题

构造const对象与对const对象的引用

21

返回临时的const引用与本地的const引用不同吗?

35

返回对象的const引用

20

对const对象的引用

10

对非Const对象的Const引用与对非Const对象的非Const引用的C++区别

60
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文