有没有办法强制类的用户根据构造函数使用的数据构造const
个对象?
例如,考虑一个缓冲区周围的小包装类,可以是const
或非const
class Wrapper {
public:
Wrapper(const char*);
Wrapper(char*);
};
现在,如果用户提供const
,我是否可以强制他们在编译时将对象声明为const
。那是
// you have to do this if the input is const
const char* a;
// this will not compile
Wrapper w(a);
// but this will
const Wrapper(a);
有什么想法吗?
答案 0 :(得分:3)
您不能在构造函数中执行此操作,但您可以创建一个返回const对象引用或指针的工厂。但是,您需要禁用复制和复制构造,并且可能不提供任何值。