C++ 中的constkeyword

为什么使用const?採用符号常量写出的代码更easy维护;指针经常是边读边移动,而不是边写边移动;很多函数參数是仅仅读不写的。const最常见用途是作为数组的界和switch分情况标号(也能够用枚举符取代),分类例如以下:

常变量:  const Type 变量名 或  Type const 变量名 //两者等同, 如: const int a=5; 与 int const a=5; 等同

常引用:  const Type &引用名

常对象:  Type const 对象名

常成员函数:  类名::fun(形參) const

常数组:  Type const 数组名[大小]

常指针:  const Type* 指针名 ,Type* const 指针名

首先提示的是:在常变量(const 类型说明符 变量名)、常引用(const 类型说明符 &引用名)、常对象(类名 const 对象名)、 常数组(类型说明符 const 数组名[大小]), const” 与 “类型说明符”或“类名”(事实上类名是一种自己定义的类型说明符) 的位置能够互换。

如:

一、Const作用

   例如以下表所看到的:

二、Const的使用方法

常变量:  const 类型说明符 变量名

常引用:  const 类型说明符 &引用名

常对象:  类名 const 对象名

常成员函数:  类名::fun(形參) const

常数组:  类型说明符 const 数组名[大小]

常指针:  const 类型说明符* 指针名 ,类型说明符* const 指针名

2.1、常量使用方法

const Type varibale = value or Type const variable = value;  在C++中经常使用来替换#define,一个原因是在编译器处理源代码是被预处理器移走了。错误发生时非常调试;第二个原因是每使用一次都会又一次申请内存,添加代码码,而const则仅仅一份内存空间。

2.2、指针使用CONST

(1)指针本身是常量不可变

(char*) const pContent;

const (char*) pContent;

(2)指针所指向的内容是常量不可变

const (char) *pContent;

(char) const *pContent;

(3)两者都不可变

const char* const pContent;

(4)还有当中差别方法,沿着*号划一条线:

假设const位于*的左側,则const就是用来修饰指针所指向的变量,即指针指向为常量;

假设const位于*的右側。const就是修饰指针本身。即指针本身是常量。

3、函数中使用CONST

(1)const修饰函数參数

a.传递过来的參数在函数内不能够改变(无意义,由于Var本身就是形參)

void function(const int Var);

b.參数指针所指内容为常量不可变

void function(const char* Var);

c.參数指针本身为常量不可变(也无意义,由于char* Var也是形參)

void function(char* const Var);

d.參数为引用。为了添加效率同一时候防止改动。修饰引用參数时:

void function(const Class& Var); //引用參数在函数内不能够改变

void function(const TYPE& Var); //引用參数在函数内为常量不可变

(2)const 修饰函数返回值

能够阻止用户改动返回值。返回值也要对应的付给一个常量或常指针。

4、const修饰成员函数

const对象仅仅能訪问const成员函数。而非const对象能够訪问随意的成员函数。包含const成员函数;

const对象的成员是不能改动的,而通过指针维护的对象确实能够改动的;

const成员函数不能够改动对象的数据。无论对象是否具有const性质。

编译时以是否改动成员数据为根据进行检查。

时间: 2024-10-11 09:36:26

C++ 中的constkeyword的相关文章

JAVA修饰符类型(public,protected,private,friendly)

JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包内的不论什么类,及包外的那些继承了此类的子类才干訪问:private的类.类属变量及方法,包内包外的不论什么类均不能訪问:假设一个类.类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的不论什么类都能够訪问它,而包外的不论什么类都不能訪问它(包含包外继承了此类的子类),因此

const 使用方法具体解释

const使用方法具体解释 面向对象是C++的重要特性. 可是c++在c的基础上新添加的几点优化也是非常耀眼的 就const直接能够代替c中的#define 下面几点非常重要,学不好后果也也非常严重 const 1. 限定符声明变量仅仅能被读 const int i=5; int j=0; ... i=j;   //非法.导致编译错误 j=i;   //合法 2. 必须初始化 const int i=5;    //合法 const int j;      //非法.导致编译错误 3. 在还有一

面向对象程序中的常量

一.常数据成员 使用constkeyword进行说明的数据成员,称为常数据成员.其作用和使用方法与一般常变量(const变量)相似,但常数据成员的值是不能改变的. 注意:仅仅能通过构造函数的參数初始化表对常数据成员进行初始化,不能採用在构造函数中对常数据成员赋初值的方法. 比如: 如在类体中定义了常数据成员age: const int age;    //声明age为常数据成员 在类外定义构造函数,应写成下面形式: CStudent∷Cstudent(int a):age (a){--}//通过

C语言:constkeyword、结构体

前几节内容的解说,主要是内存地址及指针的分析.这一节解说一下easy混淆的keywordconstant及结构体的知识. 一.constkeyword 1. 字符常量的指针 char const *p1 = "hello"; printf("指针的值:%p,指针所指向的值:%c\n",p1, *p1); p1++; printf("指针的值:%p,\n",p1); 上例中.p1就是字符常量的指针,它的特点: 指针的值能够被改动.指针所指向的值不能

win10周年版eNSP中启动AR提示错误代码40问题

win 10操作系统中安装eNSP 1.2.00.380,一直运行正常,但在2016年11月升级win 周年版之后,启动AR时启动失败,提示错误代码40. 卸载eNSP及VirtualBox之后重装问题依旧.按照论坛和网上各种说法更新virtualbox修改虚拟网卡设置,或者重新注册都无法解决,最终多方查找终于找到解决方案. 环境:win10 周年版,eNSP 1.2.00.380,VirtualBox 4.2.8 eNSP注册后virtualbox管理器中会出现AR_Base,WLAN_AC_

css中的px、em、rem 详解

概念介绍: 1.px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选.Windows系统默认是96dpi,Apple系统默认是72dpi. 2.em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度,故名em.现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等.通常1em=16px

angularJs中关于ng-class的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子. 而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性 这里有三种方法: 第一种:通过数据的双向绑定(不推荐) 第二种:通过对象数组 第三种:通过key/value 下面简单说下这三种: 第一种:通过数据的双向绑定 实现方式: function changeClass(){   $scope.className = "change2"; } <div clas

Uploadify/uploadifive上传(中文文档)

Uploadify是一款基于JQuery的优秀的文件/图片上传的插件,有基于Flash和HTML5两种版本. Uploadify/uploadifive主要特点有: 1. 多文件上传 2. 个性化设置 3. 上传进度条显示 4. 拖拽上传(HTML5版本) 官网:http://www.uploadify.com 部署 在部署一个Uploadify实例前,请确保满足最低要求: 1.jQuery 1.4.x 或更高版本 2.Flash Player 9.0.24 或更高版本 3.支持PHP, ASP

XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)

在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug 10 21:28:38 2017 from 192.168.1.102 [[email protected] ~]# Socket error Event: 32 Error: 10053. Connection closing...Socket close. Connection closed by foreign host. Disconnected f