1. 修饰普通变量

修饰变量语法 const TYPE value  <==> TYPE const value 两者等价, 变量不可修改,无需说明。

2. 修饰指针

首先看下面一段 代码 , 输出结果为a1: 1     a2: 2       b1: 10 没有错误。

int a = 1;

    int b = 10;

cout << "a1: " << a << endl;

    int * p = &a ;

    (*p)++;

    cout << "a2: " << a << endl;

    p = &b;

    cout << "b1: " << b << endl;

加一个const后, 红字部分出现编译错误,说明此时(*p)是const的,指针指向的内容不能修改

int a = 1;

    int b = 10;

cout << "a1: " << a << endl;

    const int * p = &a ;

    (*p)++;

    cout << "a2: " << a << endl;

    p = &b;

    cout << "b1: " << b << endl;

将const换一个地方,红字部分出现编译错误,说明此时指针p是const的,指针本身不能再修改,不能指向其他地方。

int a = 1;

    int b = 10;

cout << "a1: " << a << endl;

    int *const p = &a ;

    (*p)++;

    cout << "a2: " << a << endl;

    p = &b;

    cout << "b1: " << b << endl;

 3. 修饰函数形参

例: int fun(int const a)  说明形参a 在函数体内不能变化。   参数的形式各异,可以是变量,指针,引用等。

 

4. 修饰类对象 类成员

首先如下代码:

class A
{
public:
A(){ num = 1;}
int num;
void fun1()
{
num++;
cout << "fun1_num: " << num << endl;
}
void fun2()
{
num++;
cout << "fun2_num: " << num << endl;
} }; int main ()
{
A a;
a.fun1();
a.fun2();
return 0;
}

a. 如果用const 修饰对象,将21行改为 const A a; 那么22 23行将会报错,因为const修饰对象时,任何非const的方法都不能调用,因为此方法有修改成员变量的意图,应该改为void fun1() const  和 void fun2() const,并将num++去掉。

b. 如果用const修饰类的方法,如a中的void fun1() const  表示该方法不会修改类成员变量,所以num++不能加进去。

c. 修饰成员变量,如果上面的num为 const int num,那么这只能在初始化列表中初始化
A():num(1){},不能在构造函数中初始化。

C++ Const 使用总结,代码实例亲测的更多相关文章

  1. Cocos Creator JS web平台复制粘贴代码(亲测可用)

    Cocos Creator JS web平台复制粘贴代码(亲测可用) 1 webCopyString: function(str){ var input = str; const el = docum ...

  2. IE兼容问题,各类css hack代码(亲测有效)

    现在大部分企业对浏览器兼容要求是IE7+或者IE8+,要求IE6的很少,此处一并写出. IE6: _margin-top: 20px; IE6+IE7: *margin-top: 20px; +mar ...

  3. [PHP+JS]微信卡券(潦草笔记,全代码,亲测通过)

    群发卡券可以通过客服消息推送 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547 后端代码: define('A ...

  4. vue加百度统计代码(亲测有效)

    申请百度统计后,会得到一段JS代码,需要插入到每个网页中去,在Vue.js项目首先想到的可能就是,把统计代码插入到index.html入口文件中,这样就全局插入,每个页面就都有了;这样做就涉及到一个问 ...

  5. 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    目录 0.概述websocket 1.app.js写法 2.后台写法 0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就 ...

  6. 6个美观的纯CSS渐变背景代码分享(亲测有效)

    样式1 background-image: linear-gradient(160deg, #b100ff 20%,#00b3ff 80%); 样式2 background-image: linear ...

  7. PHP抽奖代码。亲测可用

    $prize_arr = array( '0' => array('id' => 1, 'title' => 'iphone5s', 'v' => 5), '1' => ...

  8. linux 系统下开机自动启动oracle 监听和实例 (亲测有效)

    [oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listene ...

  9. 亲测可用!!!golang如何在idea中保存时自动进行代码格式化

    亲测可用,golang在idea中的代码自动格式化 1.ctrl+alt+s打开设置界面,选择[Plugins] -> [Install JetBrains plugin...] -> 搜 ...

随机推荐

  1. Struts2 后台获取路径的几种方法

    Struts2 后台获取路径的几种方法 package actions.app; import java.io.File; import org.apache.struts2.ServletActio ...

  2. 《STL源代码剖析》学习笔记系列之七、八——仿函数和配接器

    1. 仿函数 仿函数又名函数对象.具有函数性质的对象.就是传入一些參数.然后对參数进行某些运算,然后返回一个值. 为了可以使行为类似函数,须要在类别定义中必须自己定义function call 运算子 ...

  3. memcache原理和实际应用

    Memcache是什么 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的.眼下全世界不少人使用这个缓存项目来构建自己大负载的站点,来分担数据库的压力. 它能够应 ...

  4. git 修改远程仓库地址

    以前的老项目需要修改git路径,为了保留之前的上传记录和分支等可以通过以下方法解决这个问题 sourceTree项目远程仓库,直接修改origin路径,然后提交一个commit即可将项目上传到新的gi ...

  5. [译]GLUT教程 - 整合代码1

    Lighthouse3d.com >> GLUT Tutorial >> Input >> The Code So Far 以下是前面几节的完整整合代码: #inc ...

  6. window mysql安装步骤

    window安装mysql(本人系统win10 64位 安装mysql-5.7.10-winx64) 1. 官网下载mysql zip安装包,然后解压到你想安装的目录,假设解压的目录是P:\mysql ...

  7. ICloneable接口 Clone 深拷贝 浅拷贝

    需要字段本身也实现了深拷贝Clone.应用场景不多,意义不大. 1. 隐含式地要求其子类和引用类也要实现ICloneable接口,如果引用层次比较深类似一个网状或树形接口,增加复杂性. 2. 考虑给s ...

  8. wireshark:Couldn't run /usr/bin/dumpcap in child process: Permission denied

    When start wireshark, I met an error like: 引用 Couldn't run /usr/bin/dumpcap in child process: Permis ...

  9. python利用正则表达式提取字符串

    前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串.日志分析会遇到这种情况,下面我会分别讲一下对应的 ...

  10. PopupWindowFromBottom 从底部弹出popupwindow

    自定义PopupWindowFromBottom public class PopupWindowFromBottom extends PopupWindow { public PopupWindow ...