【发布时间】:2021-09-14 13:52:14
【问题描述】:
在 C++ 中,对象构造函数不能是 const 限定的。
但是 - A 类的对象的构造函数可以知道它是在构造 const A 还是非常量 A?
被关于this question的讨论中的一个要点所激励。
【问题讨论】:
-
那次讨论让我写信给this。看起来 gcc 之后出于某种原因将缓冲区归零。 Nerd Sniping 是一回事!
-
对于您的用例,构造函数
enum Tag { Mut, Const };是否可以接受?所以你会这样做Foo foo{Mut};或Foo const cfoo{Const};... 这意味着它是手动的,如果有人搞砸了,追踪错误会很烦人。 -
@AyxanHaqverdili:我不确定该程序与问题的关系,但是 - 如果我没记错的话,从对象被破坏的位置读取是未定义的行为。
-
@Eljay:显然,如果你告诉你的构造函数你正在构造什么,它可以马上告诉你。没有作弊...
-
使用将对象指针传递给构造函数的已删除答案需要一个醒目的名称。我建议 CUCP “奇怪的不常见的构造函数模式”。关于Ayxan的书呆子狙击:程序员只值一分。
标签: c++ reflection constants construction