gpt4 book ai didi

c++ - 是否可以在 C++ 中仅构造特定类型的 const 对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:32 26 4
gpt4 key购买 nike

我想实现具有以下属性的类:

class A { ... };

const A a; // ok - should work.
A b; // compilation error - shouldn't work!

此外,如果对象的const性取决于构造函数签名,那就更好了:

const A c(1);  // ok - should work.
A d("a"); // ok - should work.
A e(2); // compilation error - shouldn't work!

如果需要,允许使用 C++11。


更新#1

因为我不知道答案,所以不需要严格遵循上面的代码 - 欢迎任何提供类似语义的 C++ 模式。

最佳答案

1.您可以创建只有常量方法和私有(private)成员的类。

2.您可以创建“普通”类,但将其构造函数声明为私有(private)。然后你将需要一个具有以下方法(或类似方法)的 friend 类

class ConstClassProvider{
public:
static const A* getA(/* you can have params here*/)
{
return new A();
}
}

所以

A a1;//error
const A a2;//error
A *a3 = ConstClassProvider::getA(); //error
const A *a4 = ConstClassProvider::getA(); //ok!

关于c++ - 是否可以在 C++ 中仅构造特定类型的 const 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com