强制用户声明对象const

时间:2013-04-18 16:57:15

标签: c++

有没有办法强制类的用户根据构造函数使用的数据构造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);

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您不能在构造函数中执行此操作,但您可以创建一个返回const对象引用或指针的工厂。但是,您需要禁用复制和复制构造,并且可能不提供任何值。