对象存在于C 中是什么意思
What does it mean for an object to exist in C++?
[class.dtor]/15读,重点是我的:
一旦调用对象的破坏者,对象不再存在;如果对寿命已经结束的对象调用破坏者,则行为是不确定的(3.8)。
但是,据我所知,这是标准对象"现有"的唯一参考。这似乎也与[Basic.Life]相反,这是更具体的:
类型
T
对象的寿命结束时:
如果
T
是具有的类类型> 非平凡的驱动器(12.4),则destructor呼叫开始,或对象占据的存储被重复使用或释放。
我们这里有两个不同的措辞:"对象结束的寿命"answers"对象不再存在",前者唯一发生在非平凡的驱动器中,而后者则发生在 any 的情况下发生驱动器。差异的意义是什么?对象不再存在的含义是什么?
引用的措辞似乎意味着编译器可以正确插入与对象相关的内存,以返回与对象相关联的内存,以启动器的destructor 。但是这样做将消除对象在破坏过程中引用其自己成员的能力,如果对象能够破坏自身。
所以我认为引用的措辞被打破并应修复。
关于"生命周期"answers"存在"的意思,我建议有一些不同的上下文,其中它们的意思是不同的事情:
在构造,生命周期和存在的背景下,构造器开始时开始。在这种情况之外,它们在构造函数结束时开始。
在破坏,生命周期和存在的情况下结束时结束。在这种情况之外,它们在破坏开始时结束。
因此,一个对象可以在施工期间指其自己的成员,并有可能将自己转移到其他对象的功能,该功能可能是指对象及其成员,等等。但是通常,直到其构造函数完成后,可能不会引用对象(课堂实例)(不产生未定义的行为)。
。和一个对象的驱动器可以参考其自己的成员并调用其他(现有)对象的功能,这可能是指被摧毁和/或其成员的对象。但是通常,在其破坏者启动后可能不会引用一个对象。
这种多上下文定义对我来说是最有意义的,但是我可以看到,从分配内存的那一刻,应该将对象视为活着的对象,直到发布内存的那一刻,我要说的是,当其一个构造函数启动时,应分配一个浅副本的内存,并在其破坏者结束时释放。
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思