[英]C++ : Is class type const always a top-level const?
以下是以下代码:
#include <iostream>
using namespace std;
class A {
public:
int *x;
};
int main() {
int b=100;
A a;
a.x = &b;
const A &m = a; // clause 1 - Is this top-level const?
int *r = m.x; // *r has no const yet allowed. Is it due to reference m being top level const?
}
任何帮助表示赞赏。
谢谢
int const ca = 24;
int a = ca;
你会期望这个编译正确吗? 确实如此。 在这里,我用值24
初始化了一个 integer 。
您的代码是相同的情况,除了 integer 您有指向 integer 的指针:
m
是 const,所以mx
是 const。 x
是常量,即x
不能被修改(通过m
)。 更严格地说, mx
是int * const
类型,即指向 integer 的常量指针。
int *r = m.x
在这里,您只需使用指针mx
的值初始化指针r
。 mx
是 const 的事实不是问题。 没有顶级 cv 的两种类型都是相同的:指向(可变)integer 的指针。
const A &m = a; // clause 1 - Is this top-level const?
是的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.