c++ - C++ 中的 const 指针与 const 引用

标签 c++ reference

根据下面的程序,我可以理解,引用前面的const关键字的意思是Const 对const值的引用,对吗?

#include <iostream>
using namespace std;

struct s
{
    int x;
};

int main(void)
{
    s a = {10}, b = {30};

    // IN POINTERS ----------------
    const s* ptrToConstValue;
    ptrToConstValue= &a;
    //ptrToConstValue->x = 30; 
    ptrToConstValue = &b;

    s* const constPtrToNonConstVaue = &a;
    constPtrToNonConstVaue->x = 40;
    //constPtrToNonConstVaue = &b;

    const s* const constPtrToConstValue = &a;
    //constPtrToConstValue = &b;
    //constPtrToConstValue->x = 30;


    // IN REFERENCES -------------
    const s& seemsToBeConstRefToConstValue = a;
    //s = b;
    //s.x = 30;

    return 0;
}

最佳答案

所以困惑是这样的:

X x;

X* px       = &x; // pointer to x
X* const px  = &x; // *const pointer* to x

const X* px   = &x; // pointer to *const x*
X const* px   = &x; // identical

const X* const px = &x; // *const pointer* to *const x*

现在作为引用,“指针部分”始终是 const:

X& rx = x;       // ref to x

X const& rx = x; // ref to const x
const X& rx = x; // identical

关于c++ - C++ 中的 const 指针与 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387062/

相关文章:

c++ - 算术运算是否会受到编译器优化的影响?

c++ - 非常量引用的初始化

C++ 常量引用语义?

c++ - 尝试从 C 调用 ObjC 方法时出现链接器错误

传递给子例程时Perl引用和延迟哈希值?

c++ - 为什么需要引用 const 以避免复制参数

c++ - 是否存在取消引用(但不使用)空指针以进行空引用的平台或情况会表现不佳?

c++ - 使用 getline 在运行时获取与文件输入相关的错误

c++ - 从注入(inject)的 dll 调用时 BeginPaint 失败,即使在目标应用程序中调用 EndPaint 之后也是如此

.net - 在 C++ 中重载运算符,然后在 VB.NET 中导出和导入