Pointer to Const & const pointer

来源:互联网 发布:傅里叶变换算法 编辑:程序博客网 时间:2024/05/15 14:41

这是c++语法中比较绕的一个概念,也是笔试面试中经常会考的知识点。 c++你为什么是c++啊?

 

下面的内容摘自 Thinking in C++ Chapter 8 Constants

 

Pointer to const

 

这有两种定义形式

const int* u;

 

Starting from the identifier, we read “u is a pointer, which points to a const int.”

 

int const* v;

 

the way it actually reads is “v is an ordinary pointer to an int that happens to be const.”

 

都表示了指向的int是不能改变的。

 

 

const pointer

 

int d = 1;
int* const w = &d;


Now it reads: “w is a pointer, which is const, that points to an int.”

 

Because the pointer itself is now the const, the compiler requires that it be given an initial value that will be unchanged for the life of that pointer. 因为w是常量,所以一定是要初始化的。

 

 

const pointer to const

 

这个其实前两种的合体。

 

int d = 1;
const int* const x = &d; // (1)
int const* const x2 = &d; // (2)


Now neither the pointer nor the object can be changed

 

原创粉丝点击