在 C++ 中,对象构造函数不能是 const 限定的。
但是 - 可以是类 A
的对象的构造函数吗?知道它是否正在构建 const A
或非常量 A
?
受到关于 this question 的讨论中的一个细节的启发.
最佳答案
不,因为复制省略(以及所谓的保证复制省略)可以 更改 “构造后”对象的常量性:
struct A {
bool c;
A() : c(magic_i_am_const()) {}
A(const A&)=delete; // immovable
};
const A f() {return {};}
A g() {return f();} // OK
void h() {
A x=f(); // OK
const A y=g(); // OK
}
应该怎么做x.c
和 y.c
是?
关于c++ - C++ 构造函数能否知道它是否正在构造一个 const 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68228064/