相关疑难解决方法(0)

复制,常量和非常量,吸气剂的优雅解决方案?

你有没有恨它

class Foobar {
public:
    Something& getSomething(int index) {
        // big, non-trivial chunk of code...
        return something;
    }

    const Something& getSomething(int index) const {
        // big, non-trivial chunk of code...
        return something;
    }
}
Run Code Online (Sandbox Code Playgroud)

我们无法使用另一个方法实现这两种方法,因为您无法constconst版本中调用非版本(编译器错误).演员将被要求const从非const一个版本调用该版本.

有没有一个真正优雅的解决方案,如果没有,最接近一个?

c++ const

114
推荐指数
4
解决办法
5万
查看次数

抛弃方法的常数

作为我之前的问题的后续(通过const&写入类成员),是否也很好地定义并正确抛弃类成员方法的常量?

class A
{
public:
    A()
    : a(5)
    {
    }

    int run() const
    {
        std::cout << "a: " << a << std::endl;
        int& x = (int&)a;
        x = 17;
        std::cout << "a: " << a << std::endl;
        return 0;
    }

private:
    int a;
};

int main()
{
    A program;
    return program.run();
}
Run Code Online (Sandbox Code Playgroud)

输出(在cpp.sh上用c ++ 14测试-O0,-Wall,-Wextra和-Wpedantic):

a: 5
a: 17
Run Code Online (Sandbox Code Playgroud)

如果没有,我会参考哪个标准来解释?

c++ const const-cast undefined-behavior

3
推荐指数
1
解决办法
144
查看次数

标签 统计

c++ ×2

const ×2

const-cast ×1

undefined-behavior ×1