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. TouchSlide - 大话主席

    http://www.superslide2.com/TouchSlide/downLoad.html 首  页如何使用查看参数案例演示下载页面交流反馈SuperSlide TouchSlide - ...

  2. notepad 替换行收尾字符串或在行首尾新增字符

    用 Notepad++ 打开,把每一个将要放在表中单元格的内容放一行(注: ^ 代表行首 $ 代表行尾) 去除行尾空格和空白行:按CTRL+H 选择正则表达式-- 查找目标:\s+$ 替换为空 去除行 ...

  3. iOS lipo 移除i386 x86_64两个平台

    由于 iOS 编译的特殊性,为了方便开发者使用,我们将 i386 x86_64 armv7 arm64 几个平台都合并到了一起, 所以使用动态库上传appstore时需要将i386 x86_64两个平 ...

  4. 让Category支持添加属性与成员变量【转载】

    Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数.但是Category不允许为已有的类添加新的属性或者成员变量.     一种常见的办法是通过runti ...

  5. Apache配置压缩优化时报错——undefined symbol: inflateEnd

    Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...

  6. Android Java 线程池 ThreadPoolExecutor源代码篇

    线程池简单点就是任务队列+线程组成的. 接下来我们来简单的了解下ThreadPoolExecutor的源代码. 先看ThreadPoolExecutor的简单类图,对ThreadPoolExecuto ...

  7. <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道

    熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制.木章开始我们先简单介绍TCP粘包/拆包的基础知识,然后模拟一个没有考虑TCP ...

  8. Java NIO —— Buffer(缓冲区)

    Buffer是一个抽象类,位于java.nio包中,主要用作缓冲区.注意:Buffer是非线程安全类. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffer ...

  9. python 正則表達式推断邮箱格式是否正确

    import re def validateEmail(email):     if len(email) > 7:         if re.match("^.+\\@(\\[?) ...

  10. linux php.ini又一次载入问题

    今天发现自己server改动php.ini之后无法又一次载入! .无法使用php-fpm reload,奇怪.! 后来查了一下.能够使用 /etc/init.d/php-fpm reload 来又一次 ...