首页 / C++ / c++ const关键字
c++ const关键字
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++ const关键字,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2651字,纯文字阅读大概需要4分钟。
内容图文
- Const修饰成员变量
(1) Const修饰普通类型的变量,在定义时初始化。
① Const int num1 = 1024,此时num1的值不能再被修改。通常需要在定义时进行初始化。
(2) Const修饰指针变量
① const修饰指针指向的内容,则内容为不可变量。
如果只有一个const,位于*的左侧:表示指针所指的数据是常量,不能通过该指针修改实际数据。指针本身是变量,可以指向其他的内存单元。
Const int * ptr1_num1 = &num1;
Int const* prt2_num1 = &num1;
这两种写法是等价的,
Ptr1_num1 = &num2;//合法,因为可以把ptr1_num1指向其他其他内存单元
*ptr1_num1 = 1234//不合法 ,因为不能修改指针指向内存单元的数据。
② Const修饰指针,则指针为不可变量
如果只有一个const,位于*的右侧:表示指针不能指向其他内存单元,所指向的数据可以修改。
Int * const ptr2_num1 = &num1;
Ptr2_num1 = ptr1_num1//不合法,不能修改指针指向的内存地址。
*ptr2_num1 = 1234//合法
③ 如果有两个const位于*的左右侧,表示指针和指针所指向的数据都不能修改
int a = 8;const int * const p = &a;
2.Const修饰函数参数
(1) Const可以修饰形参,值传递。
Void function(const int var)
表明参数var,在函数内部不能改变他的值。因为函数修改形参的值并不会改变实参的值,所以一般不需要const修饰。
(2) Const修饰引用类型的参数时,不能修改引用对象的任何成员,只能调用const修饰的成员函数,好处是引用传递不需要一个新的参数副本(节省效率)。
Void constest(const Computer & mycomputer){
//参数为computer类型的mycomputer对象。不能修改mycomputer的任何成员变量。
}
3.Const修饰返回值
使用const修饰引用类型的一个常见的原因是:提高效率。
如果不加const,程序会返回一个复制的引用地址,如果加了const,地址是固定的,唯一的不变的,并且效率更高。
总结:在可以返回一个对象,也可以返回一个对象的引用时,应该首选引用,使用const更加有效率。
4.const修饰类
(1) Const修饰成员变量
表示成员变量不能被修改,同时只能在初始化列表中赋值
(2) Const修饰成员函数
① 目的是防止成员函数修改被成员变量的值。
Void function const{}
② 如果const成员函数想修改成员变量的值,用mutable关键字修饰成员变量。
class Test
{
public:
Test(int _a,int _b):_ca(_a),_cb(_b){}
void add()const
{
++_ca; // 错误
++_cb; // 正确 因为cb用mutable修饰了。
}
private:
int _ca;
mutable int _cb;
};
③ Const不能修饰构造函数,因为构造函数要修改类的成员变量。
④ Const不能修饰static静态成员函数。
成员函数中const是用来修饰this指针的,意味着this指向的内容不可变。this指针是某个具体对象的地址。Static静态成员是属于类的,所有对象共用static成 员,不属于某个具体的对象,所以static成员函数没有this指针,所以const不能修饰静态成员函数。
(3) Const修饰类对象
① 对象的任何成员都不能被修改
② 只能调用const成员函数
5.Const类型变量可以通过类型转换符const cast将const类型转换成非const类型。
内容总结
以上是互联网集市为您收集整理的c++ const关键字全部内容,希望文章能够帮你解决c++ const关键字所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。