const简单介绍:

1不再使用c中的#define,c++默认不给const定义的变量分配内存,所以它默认的是仅本文件可以看到该变量(即internal linkage),

const int bufisze;

如果工程中的文件看见,就要明显的写出关键字extern,即,此时编译器会给它分配内存。

extern const int bufisze = 100;

另外:

extern const int bufsize;//只是声明不是定义

const int bufsize=;//必须加上如此定义

// int bufsize=1;!error
//bufsize=1;erro const buf;//错误,因为默认的只有内部文件可见,必须定义的时候就初始化。

2 const修饰参数

表示该参数不能改变。

void  f(const int i){
i++;//error}

注:

在使用某些类,特别是比较大的类的时候,我们经常看到参数的形式如  fun(const Integer & a),(Integer 是某个自定义类)使用引用和const。我对此的理解是:

1  ”引用参数”的效率优于“传值参数”。传值调用参数是一个局部变量,会被初始化为相同的参数值,那么调用函数时候会存在两个副本,而引用相当于直接用了那个地址的参数。(所以函数中若改变了引用的参数,结果会保留)

2我们既不想创造两个副本,所以用“引用&”,不要确定该类的参数没有被改变,所以经常我们会看到这种语法,

const Integer & a,既提高效率,又确定不改变类a

3返回Const(Returning by const value)//防止该函数作为左值lvalue

主要针对,返回值为自定义的类,对于built-in type(如int,double),加不加无所谓。

const X f6();

f6()=X(1)//error

其目的就是为了实现用户自定义类型与内置类型最大限度的保持一致性。

比如操作 a+b = c; 对于内置类型在编译时,会弹出不能对lvalue进行赋值的错误;然而对于用户自定义类型,比如class A{}; 当对A定义了形式为

A operator+(const A& lhs, const A& rhs){};的接口时,编译和连接过程不会出现内置类型弹出的错误。

解决办法就是给函数的返回值加上const标识,指定不能对函数的返回值进行赋值,如此一来,对于自定义类型,再进行a+b = c;操作时,编译过程也会报错。

在现实的编码中,可能谁也不会敲出a+b=c;这样的单纯语句,但是你不可能保证在你想表达if(a+b == c)时,却一时马虎写成了if(a+b = c),程序能够编译连接通过,但不是按你想要的逻辑运行,于是问题就出现了,这个问题应该再编译时期就被发现的

//此段参考http://blog.csdn.net/zhjxin1800/article/details/7584375

4成员函数Const

如果你有一个成员函数,他不应该更改该对象成员(非静态)的值,就应该在声明,定义最后加const

void ouput() const;

该类的const对象,只能调用const成员函数,不能调用非const成员函数。

本人水平有限,怀着分享学习的态度发表此文,欢迎大家批评,交流。感谢您的阅读。

欢迎转载本文,转载时请附上本文地址:  http://www.cnblogs.com/Dzhouqi/p/3393203.html

另外:欢迎访问我的博客 http://www.cnblogs.com/Dzhouqi/

c++ const 关键字 学习笔记的更多相关文章

  1. C++中的const关键字学习笔记

    一.const引用 1. 例子一 #include <iostream> using namespace std; class sp { public: sp() {cout<< ...

  2. Java this关键字 学习笔记

    前言: 这篇博文就是系统的学习一下Java中的this关键字,本人对this关键字的理解知识简单的停留在对  类的成员变量进行赋值,这次所以决定系统的体会一下this 关键字 转自:https://b ...

  3. namespace关键字学习笔记

    一.namespace简介 namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全局的namespace,但是由于现在的程序的规模越来越大,程序的分工越来越细,全局作用域变得越来越 ...

  4. C语言学习及应用笔记之三:C语言const关键字及其使用

    在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图. 事实上,无论我 ...

  5. C语言学习笔记--const 和 volatile关键字

    1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰 ...

  6. ES6学习笔记<一> let const class extends super

    学习参考地址1  学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也 ...

  7. JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别

    JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用 ...

  8. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  9. 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字

    Swift 2.0学习笔记(Day5)——我所知道的标识符和关键字   原创文章,欢迎转载.转载请注明:关东升的博客 好多计算机语言都有标识符和关键字,一直没有好好的总结,就是这样的用着,现在小小的整 ...

随机推荐

  1. 引用、return

    C语言中没有引用,引用(reference)是c++对c语言的重要扩充.通俗点说,引用就是“起别名”.比如变量data,和它的引用 RefData.虽然名字不同,但是操作他们的时候,都操作的是相同的内 ...

  2. Poj 3982 序列

    1.Link: http://poj.org/problem?id=3982 2.Content: 序列 Time Limit: 1000MS   Memory Limit: 65536K Total ...

  3. mysql高可用探究 MMM高可用mysql方案

    1    MMM高可用mysql方案 1.1  方案简介 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复 ...

  4. Cassandra1.2文档学习(14)—— 事务和并发控制

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_ ...

  5. sublime text2 中文乱码的解决办法

    1.安装Sublime Package Control 在Sublime Text 2上用Ctrl+-打开控制台并在里面输入以下代码,Sublime Text 2就会自动安装Package Contr ...

  6. (转)MVC 3 数据验证 Model Validation 详解

    继续我们前面所说的知识点进行下一个知识点的分析,这一次我们来说明一下数据验证.其实这是个很容易理解并掌握的地方,但是这会浪费大家狠多的时间,所以我来总结整理一下,节约一下大家宝贵的时间. 在MVC 3 ...

  7. (转)ASP.NET缓存全解析6:数据库缓存依赖

    ASP.NET缓存全解析文章索引 ASP.NET缓存全解析1:缓存的概述 ASP.NET缓存全解析2:页面输出缓存 ASP.NET缓存全解析3:页面局部缓存 ASP.NET缓存全解析4:应用程序数据缓 ...

  8. SIM900A访问HTTP的简单方法

    最近做项目,使用Arduino控制设备,读取数据,然后通过移动网络传送到服务器. 我选用的是正点原子的SIM900A模块.在服务器部署了一个监听程序,Arduino控制SIM900A通过TCP方式把数 ...

  9. EXTJS 4.2 资料 控件之Window窗体相关属性的用法

    最大化,最小化,是否显示关闭按钮 var win_CommonPicLibMultiple = Ext.create("Ext.window.Window", { title: & ...

  10. TF/IDF计算方法

    FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...