C++学习 之const
const在C++中很常用,在编程中也建议多使用const去告诉编译器和其他程序员某个值应该保持不变。
const可以用在很多地方:
(1)用在classes外部修饰global或namespace作用域中的常量
(2)修饰文件、函数、或区块作用域中被声明为static的对象
(3)修饰classes内部的static和non-static成员变量
(4)面向指针,也可以指出指针自身、指针所指物,或两者都是const,如:
char greeting[] = "Hello";
char * p = greeting;
const char * p = greeting;
char * const p = greeting;
const char * const p = greeting;
虽然const的语法变化多端,但是很容易理解:
(1)const出现在星号左边,表示被指物是常量
(2)const出现在星号右边,表示指针自身是常量
(3)const出现在星号的两边,表示被指物和指针都是常量
注意:如果被指物是常量,将关键字const写在类型之前和写在类型之后、星号之前,意义是相同的。如:
void f1(const Widget * pw ); //f1获得一个指针,指向一个常量Widget对象
void f2( Widget const * pw ); //f2也是
const最具威力的用法是面对函数声明时的应用。在一个函数声明式内,const可以和函数返回值、各参数、函数自身产生关联,他们也是有一定好处的:
(1)令函数返回一个常量值,往往可以降低因客户错误而造成的意外,而又不至于放弃安全性和高效性。
(2)const实施于成员函数。目的是为了确认该成员函数可作用于const对象身上。这类成员函数很重要,因为:
a. 它们使class接口比较容易理解。因为得知哪个函数可以改动对象而哪个函数不行,很重要。
b.它们使”操作const对象“成为可能。
C++学习 之const的更多相关文章
- ES6学习 let const
1.前言 发现网易云笔记 单纯的记笔记没什么意思,所以今天来博客园写学习感受了,毕设做了休息时间就来写写新学的知识 哈哈哈 !! 2.ES6 就是JavaScript 语言的下一代标准,2015年6月 ...
- ES6 学习 -- let const
看过很多大佬的ES6笔记,总结一下学习后的收获,给自己当作一个笔记用用: ES3.ES5定义变量有两种方法:var 和 function ES6定义变量有var.function.let.const等 ...
- ES6-11学习笔记--const
新声明方式:const 1.不属于顶层对象 window 2.不允许重复声明 3.不存在变量提升 4.暂时性死区 5.块级作用域 以上特性跟let声明一样,特性可看 let 的学习笔记:链接跳转 ...
- C++学习之const整理总结
1什么是const? (const类型)常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(但可以偷梁换柱进行更新) 2为什么引入const? const 推出的初始 ...
- c++ 学习之const专题之const成员函数
一些成员函数改变对象,一些成员函数不改变对象. 例如: int Point::GetY() { return yVal; } 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: ...
- Duanxx的C++学习: const指针具体解释
Const指的是一个编译时的常量. keywordconst使得代码能够确定一个变量能否够被改动. 使用了const后,能够防止对变量或者指针的改动:更重要的是,const的引用能够防止对所引用的对象 ...
- js-ES6学习笔记-const命令
1.const声明一个只读的常量.一旦声明,常量的值就不能改变. 2.const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值. 3.const的作用域与l ...
- ES6学习之const声明常量的学习
在ES中const关键字用来声明常量,const声明的一经定义不能修改 和let特性差不多, ; console.log(a); a = ; //报错 const定义完常量后必须赋值,后面不允许再次赋 ...
- C++学习笔记-const和static
const 1.使用const来定义常量 const int num = 10; //应该在声明时进行初始化,否则该常量的值是不确定的,而且无法修改 2.const与指针 指向常量的指针(const修 ...
随机推荐
- phalcon: model 验证数据完整性
The above example performs a validation using the built-in validator “InclusionIn”. It checks the va ...
- sensitivity and specificity(敏感性和特异性)
医学.机器学习等等,在统计结果时时长会用到这两个指标来说明数据的特性.
- 项目解析- JspLibrary - part1
http://rosspc:8080/JspLibrary/ 1. logon界面解析: JS 验证用户名.密码为空 <form name="form1" method=&q ...
- 游戏引擎/GUI的设计与实现-主题
GUI的主题与中心思想没有什么关系,纯粹是一种控制GUI外观的配置方案.几乎所有的视觉效果都由主题是控制的,一个设计良好的主题模块,可以通过配置文件模拟不同的系统.主题的设计可繁可简,能满足自己的需要 ...
- DedeCMSV57数据库结构文档
表名:dede_addonarticle(ENGINE=MyISAM/CHARSET=gbk) 说明:Top 字段名 说明描述 具体参数 aid 文章ID mediumint(8) unsig ...
- Remove Nth Node From End of List [LeetCode]
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- struts2视频学习笔记 21(输入校验的流程)
课时21 输入校验的流程 1.类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性. 2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,co ...
- 详解Jquery和AngularJs,Servlet中jsonp解决跨域问题(转)
众所周知,jsonp可以解决跨域问题,下面是我在查阅资料和实际项目使用后的一些总结. Jquery中jsonp的使用 //myUrl = "http://localhost:8090/api ...
- Play Framework介绍:主要概念(转)
Play Framework是一个Rails风格的Full-stack Java Web框架. MVC模型 Play应用遵循Web架构使用的MVC架构模式. 它将应用分离到不同的层中:表现层(Pres ...
- mysql str_to_date字符串转换为日期
mysql内置函数,在mysql里面利用str_to_date()把字符串转换为日期. 示例:分隔符一致,年月日要一致 select str_to_date('2008-4-2 15:3:28','% ...