C++语言const总结
来源:互联网 发布:1920 600淘宝轮播图 编辑:程序博客网 时间:2024/05/21 16:13
C++语言const总结
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。const主要有四种用法:修饰成员变量、修饰函数参数、修饰成员函数、修饰函数返回值。
1.修饰成员变量
const修饰指针变量时:(1)只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
(2)只有一个const,如果const位于*右侧,表示指针本身是常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。
(3)两个const,*左右各一个,表示指针和指针所指数据都不能修改。
#include<iostream>using namespace std;int main(){ int Ia1=3; //非const变量 const int Ia2=Ia1; //const变量 int * Ia3 = &Ia1; //非const指针指向非const数据 const int * Ia4 = &Ia1; //const数据,非const指针 int * const Ia5 = &Ia1; //非const数据,const指针 int const * const Ia6 = &Ia1; //const数据,const指针 const int * const Ia7 = &Ia1; //const数据,const指针 return 0;}
- 2.修饰函数参数
传递过来的参数在函数内不可以改变,与上面修饰变量时的性质一样。
int fuction(const int Ia1=6){ Ia1 = 7; //错误,Ia1为const变量,不能改变其值}
- 3.修饰成员函数
(1)const修饰的成员函数不能修改任何的成员变量(mutable修饰的变量除外)
(2)const成员函数不能调用非const成员函数,因为非const成员函数可以会修改成员变量
#include <iostream>using namespace std;class test_const{ public : test_const(int number):element(number){} void testConstFunction(int number) const { element = number;//错误,在const成员函数中,不能修改任何类成员变量 test(number);//错误,const成员函数不能调用非onst成员函数,因为非const成员函数可以会修改成员变量 } void test(int number) { element = number; } int element;};
- 4.修饰函数返回值
(1)指针传递
如果返回const data,non-const pointer,返回值也必须赋给const data,non-const pointer。因为指针指向的数据是常量不能修改。
const int * mallocA(){ //const data,non-const pointer int *a=new int(2); return a;}int main(){ const int *a = mallocA(); //int *b = mallocA(); ///编译错误 return 0;}
(2)值传递
如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。所以,对于值传递来说,加const没有太多意义。所以:
不要把函数int GetInt(void) 写成const int GetInt(void)。
不要把函数A GetA(void) 写成const A GetA(void),其中A 为用户自定义的数据类型。
0 0
- C语言Const用法总结
- C语言总结之const
- c语言中的const总结
- c++/c语言 const关键字用法总结
- C++和C语言const区别关键字总结
- C语言之知识点总结——const指针
- C/C++语言中关于const用法的总结
- C/C++语言中关于const用法的总结
- C语言中const,volatile,restrict的用法总结
- C语言中const,volatile,restrict的用法总结
- C语言中的const,volatile,restrict用法总结
- C++语言const总结
- C语言const介绍
- C语言const介绍
- C语言的const
- C语言const详解
- C语言关键字----Const
- C语言const使用
- Swift UITableViewCell中的按钮点击事件
- 漏洞工具包2015年态势回顾:规模与分布
- Spring MVC拦截器+注解方式实现防止表单重复提交
- Css字体
- android平台四层架构对应源代码中的目录
- C++语言const总结
- 关于Android分享的目录 - 送给读者的一份礼物
- 相对路径和绝对路径
- [Module]Logging Module学习(待续)
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- AJAX实现文件下载
- Java 7之基础 - 强引用、弱引用、软引用、虚引用
- Salesforce 自定义页面并实现手机端自适应
- 将16进制文本加载成类(写着玩的,所以很多方面看着不顺眼)