为什么使用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就是修饰指针本身。即指针本身是常量。

、函数中使用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性质。

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

C++ 中的constkeyword的更多相关文章

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

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  2. const 使用方法具体解释

    const使用方法具体解释 面向对象是C++的重要特性.  可是c++在c的基础上新添加的几点优化也是非常耀眼的 就const直接能够代替c中的#define 下面几点非常重要,学不好后果也也非常严重 ...

  3. C++_关于const 的全面总结

    C++中的constkeyword的使用方法很灵活.而使用const将大大改善程序的健壮性.本人依据各方面查到的资料进行总结例如以下,期望对朋友们有所帮助. Const 是C++中经常使用的类型修饰符 ...

  4. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  5. C/C++中constkeyword

    今天在做一个趋势笔试题的时候.才让我有了系统把constkeyword好好总结一下的冲动,由于这个关键词大大小小好多地方都出现过,出现频率很高,而每次仅仅是简短的把答案看了一下,没有真正将其整个使用方 ...

  6. 剑指Offer读书笔记(持续更新中)

    (1)定义一个空的类型,里面没有不论什么成员变量和成员函数,对该类型求sizeof,得到的结果是多少? 答案是1.空类型的实例中不包括不论什么信息,本来求sizeof应该是0,可是当我们声明该类型实例 ...

  7. C语言:constkeyword、结构体

    前几节内容的解说,主要是内存地址及指针的分析.这一节解说一下easy混淆的keywordconstant及结构体的知识. 一.constkeyword 1. 字符常量的指针 char const *p ...

  8. mapreduce中一个map多个输入路径

    package duogemap; import java.io.IOException; import java.util.ArrayList; import java.util.List; imp ...

  9. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

随机推荐

  1. 初步理解Python进程的信号通讯

    Reference: http://www.jb51.net/article/63787.htm 信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信 ...

  2. pual_bot 天气插件编写

    最近在玩pual_bot,感觉很不错,最近天气插件失效了,就结合百度api重新写了一个,也提交了. https://github.com/coldnight/pual_bot #!/usr/bin/e ...

  3. C#学习笔记(12)——三种方法操作XML

    说明(2017-7-11 16:56:13): 原文地址: C#中常用的几种读取XML文件的方法 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web. ...

  4. ARKit从入门到精通(9)-ARKit让飞机跟着镜头飞起来

    1.1-ARKit物体跟随相机移动流程介绍 1.2-完整代码 1.3-代码下载地址 废话不多说,先看效果 1001.gif 1.1-ARKit物体跟随相机移动流程介绍 1.点击屏幕添加物体,已经在第三 ...

  5. [转]JAVA泛型通配符T,E,K,V区别,T以及Class<T>,Class<?>的区别

    原文地址:https://www.jianshu.com/p/95f349258afb 1. 先解释下泛型概念 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被 ...

  6. Spring框架中InitializingBean执行顺序

    本文转自:https://www.cnblogs.com/yql1986/p/4084888.html package org.test.InitializingBean; 2 3 import or ...

  7. java 获取参数泛型类型

    import java.lang.reflect.ParameterizedType; public abstract class SampleObjectCallBack<T> { pr ...

  8. Java中Connection方法笔记

    http://www.apihome.cn/api/java/Connection.html public interface Connectionextends Wrapper 与特定数据库的连接( ...

  9. C语言 · 递归倒置字符数组

    算法提高 递归倒置字符数组   时间限制:1.0s   内存限制:512.0MB      问题描述 完成一个递归程序,倒置字符数组.并打印实现过程 递归逻辑为: 当字符长度等于1时,直接返回 否则, ...

  10. sam9260 adc 测试

    /* * adc_test.c * * Copyright (C) 2007 Mengrz */ #include <stdio.h> #include <stdlib.h> ...