关于c++中const的用法
来源:互联网 发布:my json editor 编辑:程序博客网 时间:2024/05/18 02:47
1.当然最常用的还是作为常量。
(1)const int*p的用法,表示指向的值得类型不变还是int型,但p的值可以变,可以这样理解“自以为指向const的指针”,可以将非const的对象赋值给他例如可以这样:
int i=3;
int j=4;
const int*p;
p=&i;
cout<<*p<<endl;
p=&j;
cout<<*p<<endl;
这要另一个单元的值是int类型就行,其值是可以改变的,我以为其值是不可以变得,但对当前的值是不能改变的,例如*p=3;是错误的。
(2)const指针,指指针不可以变,但它所指向的值是可以变得
如:int errNumb=0;
int *const curErr=&errNumb;
currErr=currErr;//error
*currErr=9;//ok
(3)指向const对象的const指针
const double pi=9.3;
const double *const p_ptr=π
2.const能用做形参,表示传过来的对象不能改变,在程序中经常能用的到
应该将不需要修改的引用定义为const引用,非const引用形参在使用时不放变,这样的形参既不能用const对象,也不能用字面值或者产生右值的表达式实参初始化,加上速度更快,在不用改变实参的情况下应该用const的引用
3.有些类的成员函数是常函数,const可以用来做重载的标志符
只要不是static的成员函数,都隐含的有一个this指针,来引用调用它的对象,const成员函数的const隐含的改变了this形参的类型形式如下:const classname *const this;不能改变调用它的函数对象的数据成员,以前总是不知是怎么回事,现在总算是知道了
4.有的引用可以作为const类型的例如const int& p;此时可以将常量和非常量赋值给它,当将非常量赋值给它时,此时非常量也是不能改变的。此时的p可以用右值或者左值进行赋值,而对于int &p只能以此种类型的值进行赋值,而且不能用左值进行赋值。
5.const对象的动态数组
在程序的自由存储区创建内置类型的const对象时,必须为这个数组提供初始化,实现的唯一方法:
const int *p=new const int[100];//error
const int *p=new const int[100]();//ok
对于类类型必须有类的默认构造函数才行
const string *p=new const string[100];// ok
6.可以将函数的返回类型定义成const类型的引用表示,返回的是对象本身,而且这种值是不能改变的,返回的左值,所以可以给非const的返回值赋值,是在是惊讶
7.关于const在重载中的作用
对于非const的形参,其实等价的,只是复制实参的副本,并没有对实参产生实质的影响,然而对引用和指针,就不一样了,其中的const可以作为重载的条件例如以下的两个函数:
record lookup(account&);
record lookup(const account&);
当传递const对象时,只能用第二种形式,然而传递非const对象时理论上可以使用两种函数,但是选择的是第二种函数,第二种将会发生类型的转换,而非const是精确的匹配。对于指针式同样的道理
以下的函数的const不能作为函数重载的条件
f(int*);
f(int* const);
这与const变量和非const变量是同理,只是改变的是指针的副本
8.const对象定义在头文件中的一些解释
primer上面的p59,具体的还是看不懂,如果const变量不是用常量表达式初始化,那么它就不应该在头文件中定义,和其他的变量一样,在头文件中使用extern声明,以使多个文件共享,具体是什么原因,不是很懂
9.下面的不是太懂
typedef string *pstring;
const pstring cstr;
书上面的解释是typedef当成文本扩展了不是很懂,真是不懂???
- 关于c语言中const的用法
- 关于C++中const的用法
- C/C++语言中关于const用法的总结
- C/C++语言中关于const用法的总结
- C中const用法
- 关于c++中const的用法
- 关于c++中const的用法详解
- 再议C/C++中const的用法
- C语言中const的用法
- C语言中const的用法
- C/C++中const的用法
- C语言中const的用法
- C语言中Const的用法
- C语言中const 的常见用法
- C/C++语言中const的用法
- C语言中const的用法
- C/C++中有关const的用法
- C语言中const的用法
- prefix
- 工作总结
- oracle]linux平台启动关闭oracle数据库
- delphi小技巧,提高工作效率,简易图解,菜鸟级别,大神让路
- 全国专利代理人资格 考试大纲 (2011)
- 关于c++中const的用法
- 设置横屏全屏
- 成语你能知多少
- 为什么浮点运算是对语言设计中平台无关性的挑战?
- Java软件架构师所要需的东西 (希望对很多迷茫的朋友指个路)
- 基于华为海思芯片的高清IP芯片级解决方案
- JAVA获取随机数
- iModel中同表引用的Sql计算表达式书写格式
- 运行时编译并执行C#代码