相关疑难解决方法(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万
查看次数

相同内存地址的两个不同值

#include <iostream>
using namespace std;

int main() {
    const int N = 22;
    int * pN = const_cast<int*>(&N);
    *pN = 33;
    cout << N << '\t' << &N << endl;
    cout << *pN << '\t' << pN << endl;
}
Run Code Online (Sandbox Code Playgroud)

产量

22 0x22ff74

33 0x22ff74

为什么同一地址有两个不同的值?

c++

16
推荐指数
3
解决办法
1740
查看次数

我们可以使用`const_cast`来修改常量变量吗?

int main()
{
    const int ia = 10;

    int *pia = const_cast<int*>(&ia);
    *pia = 5;

    std::cout << &ia << "\t" <<  pia <<endl;
    std::cout <<  ia << "\t" << *pia <<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

0x28fef4       0x28fef4
10             5
Run Code Online (Sandbox Code Playgroud)

*piaia具有相同的地址,但它们具有不同的值.我的目的是用来const_cast修改一个常量值,但结果显示它不起作用.

有谁知道为什么?

c++ volatile const-cast compiler-optimization

7
推荐指数
2
解决办法
1638
查看次数

标签 统计

c++ ×3

compiler-optimization ×1

const ×1

const-cast ×1

volatile ×1