我找不到太多的信息const_cast.我能找到的唯一信息(在Stack Overflow上)是:
将
const_cast<>()用于添加/删除变量的常量(岬)(或挥发性岬).
这让我很紧张.可能const_cast会导致意外行为?如果是这样,什么?
或者,什么时候可以使用const_cast?
作为一个通用规则,const_cast<>()在C++代码中使用它通常被认为是一种不好的做法,因为它(大多数情况下)揭示了设计中的一个缺陷.
虽然我完全同意这种说法,但是我不知道什么是例使用const_cast<>()是确定和唯一的解决办法.
你能不能给我一些你认识/遇到过的例子?
非常感谢你.
假设我有一节课:
class NumberCollection
{
public:
typedef std::set<int> SetType;
typedef SetType::iterator iterator;
void insert(int n);
iterator begin();
iterator end();
size_t size() const;
iterator difficultBegin();
iterator difficultEnd();
size_t difficultSize() const;
private:
SetType easySet_, difficultSet_;
}
Run Code Online (Sandbox Code Playgroud)
在哪里insert()添加元素easySet_.difficultSet_成员的变化取决于成员easySet_.
我遇到的问题是,多次插入意味着difficultSet_不断重新计算.所以我想difficultSet_将懒洋洋地计算(即,只有当difficultBegin(),difficultEnd()或者difficultSize()被称为).问题是,那么我实际上必须做成difficultSet_一个mutable因为否则difficultSize()无法操作它.
所以现在我的班级宣言看起来像
class NumberCollection
{
public:
typedef std::set<int> SetType;
typedef SetType::iterator iterator;
void insert(int n);
iterator begin();
iterator end();
size_t size() const; …Run Code Online (Sandbox Code Playgroud)