const 初始化问题
2017-04-23 10:58
113 查看
const 对象一旦创建后其值就不能再改变,所以const对象必须初始化.
const int *p中,const对象是*p(即*p的值是只读),而对于此句“const对象必须初始化”,一般用法中我们是要给指针p初始化,而不是给*p初始化。所以在此可以不初始化。即使在声明是进行初始化(const int* p = 0x123456),也是在对指针p初始化,等价于如下一般用法:
对此的用法一般如下:
const int *p;
p = 0x123456;(此时是在给指针p赋值,而不是给*p赋值)
int* const p中,const对象是p,此时在指针p声明时必须初始化。
一般用法:
int* const p = 0x123456;
------解决思路----------------------
遇到const修饰的指针,需要注意有两种可能:
1、指针变量指向的值无法改变
2、指针变量本身无法改变
例如:
------解决思路----------------------
(1) int *p -- p是个非const指针,指向的对象是int;
(2) const int *p -- p是个非const指针,指向的对象是const int;
(3) int * const p -- p是个const指针,指向的对象是int;
(4) const int * const p -- p是个const指针,指向的对象是const int。
以上四个都是定义指针p,如果初始化是指初始化指针p,而不是它所指向的对象,由于(3)和(4)中指针p是const的,所以必须初始化。(1)和(2)中的指针p是非const的,可以不初始化。
所以:
const int t =***;必须初始化,不然出现错误;
但是const int*p; 可以不初始化,在用到的时候初始化;
const int *p中,const对象是*p(即*p的值是只读),而对于此句“const对象必须初始化”,一般用法中我们是要给指针p初始化,而不是给*p初始化。所以在此可以不初始化。即使在声明是进行初始化(const int* p = 0x123456),也是在对指针p初始化,等价于如下一般用法:
对此的用法一般如下:
const int *p;
p = 0x123456;(此时是在给指针p赋值,而不是给*p赋值)
int* const p中,const对象是p,此时在指针p声明时必须初始化。
一般用法:
int* const p = 0x123456;
------解决思路----------------------
遇到const修饰的指针,需要注意有两种可能:
1、指针变量指向的值无法改变
2、指针变量本身无法改变
例如:
int a = 10; const int *p; p = &a; *p = 3; // 错误,通过此指针改变指向的值 int b = 5; p = &b; // 正确 int c = 10; int * const p = &c; *p = 5; // 正确 int d = 5; p = &d; // 错误,指针变量不能改变
------解决思路----------------------
(1) int *p -- p是个非const指针,指向的对象是int;
(2) const int *p -- p是个非const指针,指向的对象是const int;
(3) int * const p -- p是个const指针,指向的对象是int;
(4) const int * const p -- p是个const指针,指向的对象是const int。
以上四个都是定义指针p,如果初始化是指初始化指针p,而不是它所指向的对象,由于(3)和(4)中指针p是const的,所以必须初始化。(1)和(2)中的指针p是非const的,可以不初始化。
所以:
const int t =***;必须初始化,不然出现错误;
但是const int*p; 可以不初始化,在用到的时候初始化;
相关文章推荐
- C++ const成员初始化问题
- 关于const指针和指向const对象的指针的初始化问题
- 十二章 类————初始化const或引用类型要用初始化列表,隐式转换问题等,友元
- (转载)C++ const成员初始化问题
- C++中const 、static、 static const和const static的初始化以及修改问题
- 类的const、static、const static成员初始化位置及其他需要注意的问题
- c++-成员初始化问题(static, const, 引用)
- C++ const成员初始化问题
- static, const 和 static const 变量的初始化问题
- 指针与引用的初始化&顶层底层const变量初始化问题
- illegal pure syntax, must be '= 0'初始化静态 const 整型(MFC编程中遇到的问题及解决)
- C++中的const,static const和static类成员的初始化问题
- C++ const成员初始化问题
- const变量初始化问题
- const常量用extern声明定义的问题(extern变量不能在使用类里初始化)
- C++中的const,static const和static类成员的初始化问题
- .NET中联动下拉列表初始化的时机问题
- 神秘的类和对象初始化过程——由一个大多数程序员都可能犯的、却又很难定位的问题谈起。
- 一个简单的初始化问题
- 类成员的初始化问题