在C++语言中,然后就总结了许多C++关键字,如果不使用常引用、指针,则须用const_cast<>进行转,指向字符char的常指针经常用来表示字符串,像windows中的LPCSTR就是const char *。
十年的海门网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整海门建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“海门网站设计”,“海门网站推广”以来,每个客户项目都认真落实执行。
1. 修饰常量
最基本的用法,用const修饰一个变量,表示这是一个常量,这种用法可以代替C语言里面的宏定义。注意要在声明时初始化,如果是类的数据成员,则在构造函数的初始化列表中初始化。
- const int a=999; //定义了常量a,代替宏定义
- //const int b; //错误,常量定义时要初始化
- extern const int c; //外部定义的常量不用初始化了
- int const d=0; //与const int等价,写法习惯不同而已
- const long e=0; //同理,把int换成char、long、类是一样的
- class Cls
- {
- public:
- Cls(int a,int b):_a(a) //常数成员要在初始化列表初始化
- {
- _b=b;
- }
- private:
- const int _a;
- int _b;
- };
2. 修饰引用,指针
对一个C++关键字的引用或指针要用常指针,也就是不能修改所引用、指向的变量。如果不使用常引用、指针,则须用const_cast<>进行转换。指向字符char的常指针经常用来表示字符串,像windows中的LPCSTR就是const char *。
- const int &g=a; //a的内容不能改,所以g(a的引用)也是const
- //int &h=a; //错误
- int &i=const_cast
&>(a); //使用const_cast<>()把常量转成非常量 - int const &j=a; //与const int &等价,写法习惯不同而已
- const int *k=&a; //a的内容不能改,所以k(a的指针)也是const
- int const *l=&a; //与const int *等价,写法习惯不同而已
- //int *m=&a; //错误
- const char *n="string"; //字符串“string”内部字符不能改变了
- char *o="string2"; //字符串“string2”可以修改
3. 修饰对象
如果修饰的是一个对象,则表示该对象的数据成员均为常量,并且只能调用该对象的常成员函数,这一点在后面解释。综合1、2、3条得出,const修饰符表示所修饰的内存区域被上了锁,不能修改。
对一个对象的常引用经常用来函数传参,当函数参数为对象是,直接按值传参会调用对象拷贝构造函数,复制对象,对程序效率造成影响,所以一般按引用传参,为了不改变传入的参数,要加const表示是常引用。
- const int &g=a; //a的内容不能改,所以g(a的引用)也是const
- //int &h=a; //错误
- int &i=const_cast
&>(a); //使用const_cast<>()把常量转成非常量 - int const &j=a; //与const int &等价,写法习惯不同而已
- const int *k=&a; //a的内容不能改,所以k(a的指针)也是const
- int const *l=&a; //与const int *等价,写法习惯不同而已
- //int *m=&a; //错误
- const char *n="string"; //字符串“string”内部字符不能改变了
- char *o="string2"; //字符串“string2”可以修改
4. 另外一种const修饰指针的方法
也就是著名的const char *和char * const的区别的问题。const char *前面说过,意思是常指针,char*所指的内存区域不能被修改,用来表示字符串。而char * const的意思指针所指向的位置不能修改,C++关键字也就是该指针不能指向其他内存区域了,这和引用很像,char * const相当于char &,所以常引用const char &相当于const char * const,也就是指针指向谁不可变,指针指向的内容也不可变。注意const是写在了*的前面还是后面,这是***区别,char const *的意思和const char *是一样的。
文章标题:C++中的C++关键字浅析
文章出自:http://www.shufengxianlan.com/qtweb/news47/129947.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联