相关疑难解决方法(0)

const_cast安全吗?

我找不到太多的信息const_cast.我能找到的唯一信息(在Stack Overflow上)是:

const_cast<>()用于添加/删除变量的常量(岬)(或挥发性岬).

这让我很紧张.可能const_cast会导致意外行为?如果是这样,什么?

或者,什么时候可以使用const_cast

c++ casting const-cast

88
推荐指数
6
解决办法
5万
查看次数

正确使用const_cast <>

作为一个通用规则,const_cast<>()在C++代码中使用它通常被认为是一种不好的做法,因为它(大多数情况下)揭示了设计中的一个缺陷.

虽然我完全同意这种说法,但是我不知道什么是例使用const_cast<>()确定唯一的解决办法.

你能不能给我一些你认识/遇到过的例子?

非常感谢你.

c++ const-cast

38
推荐指数
5
解决办法
2万
查看次数

处理C++类中的延迟计算

假设我有一节课:

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)

c++ const mutable lazy-evaluation

4
推荐指数
1
解决办法
714
查看次数

标签 统计

c++ ×3

const-cast ×2

casting ×1

const ×1

lazy-evaluation ×1

mutable ×1