Dan*_*ica 19 c++ this object-lifetime language-lawyer
this指针的值是否保证在特定对象的生命周期内保持不变?我无法想象它会改变的情况,但不知道我是否没有遗漏一些东西。
YSC*_*YSC 28
this指针的值是否保证在特定对象的生命周期内保持不变?
是的。
正如用户Aconcagua所说:this指针的值始终是在1 上调用函数的对象的地址值。所以这个问题等价于:
对象可以在生命周期内更改其内存地址吗?
根据lifetime2的定义,这是不可能的。一个对象的生命周期在它的存储被获取时或之后开始,在它被释放之前结束。
在非静态 (
[class.mfct]) 成员函数的主体中,关键字this是一个纯右值,其值是指向调用该函数的对象的指针。
2) [basic.life]/1(强调我的)
对象或引用的生命周期是对象或引用的运行时属性。如果一个变量是默认初始化的,并且如果它是类类型或其(可能是多维的)数组,则该类类型具有一个平凡的默认构造函数,则称该变量具有空初始化。 类型对象的生命周期
T开始于:
- 存储与所述适当的对准和尺寸类型
T获得,并- 其初始化(如果有)已完成(包括空初始化) (
[dcl.init]),但如果对象是联合成员或其子对象,则其生命周期仅在联合成员是联合中的初始化成员时才开始 ([dcl.init.aggr],[class.base.init]),或作为中描述[class.union]。
o类型对象的生命周期在以下情况下T结束:
- 如果
T是非类类型,则对象被销毁,或- 如果
T是类类型,则析构函数调用开始,或- 对象占用的存储空间被释放,或者被一个没有嵌套在
o([intro.object]) 中的对象重用。
| 归档时间: |
|
| 查看次数: |
1156 次 |
| 最近记录: |