还没来得及提交,电脑死机了
下次有空再写,先列些参考页面在这里。
Understanding the const qualifier
Dealing with Data:The const Qualifier
enum和#define、const
Bjarne Stroustrup's FAQ
Bjarne Stroustrup's C++ Style and Technique FAQ
C#中 const 和 readonly 的区别
Incompatibilities Between ISO C and ISO C++
就先列这么多。
需要注意一下,const可以出现在不同位置:
1、对于基本类型或自定义类型,const可以出现在之前或之后,其意义没有差别:
2、对于指针类型,const出现的位置将具有不同含义:
3、使用typedef时,可以消除2中所出现的“不同位置具有不同含义”的情况:
上面所定义的三个指针含义一致,都是表示指向固定地址。
Understanding the const qualifier
Dealing with Data:The const Qualifier
enum和#define、const
Bjarne Stroustrup's FAQ
Bjarne Stroustrup's C++ Style and Technique FAQ
C#中 const 和 readonly 的区别
Incompatibilities Between ISO C and ISO C++
就先列这么多。
需要注意一下,const可以出现在不同位置:
1、对于基本类型或自定义类型,const可以出现在之前或之后,其意义没有差别:
const
int
a
=
10
;
int const a = 10 ; // 与上一行意义相同
class A{};
const A a = A();
A const a = A(); // 与上一行意义相同
int const a = 10 ; // 与上一行意义相同
class A{};
const A a = A();
A const a = A(); // 与上一行意义相同
int
i
=
4
,j
=
20
,k
=
30
;
const int * p1 =& i; // 表示p1指向一个int常量,不能通过p1来操作修改int的内容
int * const p2 =& j; // 表示p2只能存放j的地址,不能被修改指向别处
int const * p3 =& k; // 与p1含义一致
p1 ++ ;
( * p1) ++ ; // invalid,不能修改p1所指向的int值
p2 ++ ; // invalid,p2不能指向别处
( * p2) ++ ;
p3 ++ ;
( * p3) ++ ; // invalid
const int * p1 =& i; // 表示p1指向一个int常量,不能通过p1来操作修改int的内容
int * const p2 =& j; // 表示p2只能存放j的地址,不能被修改指向别处
int const * p3 =& k; // 与p1含义一致
p1 ++ ;
( * p1) ++ ; // invalid,不能修改p1所指向的int值
p2 ++ ; // invalid,p2不能指向别处
( * p2) ++ ;
p3 ++ ;
( * p3) ++ ; // invalid
typedef
int
*
int_pointer;
int i = 4 ,j = 20 ,k = 30 ;
int * const p1 =& i;
const int_pointer p2 =& j;
int_pointer const p3 =& k;
int i = 4 ,j = 20 ,k = 30 ;
int * const p1 =& i;
const int_pointer p2 =& j;
int_pointer const p3 =& k;