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. java中利用WeakHashMap实现缓存

    简介 WeakHashMap是Java集合框架里的一员,从名字可以看出它是某种 Map.它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove() ...

  2. dynamic_cast, RTTI, 整理

    主要是参考下图,了解内存布局,然后写个实例程序就差不多明白了,但是需要熟悉指针转换. 1) 只有多态类才有RTTI信息,dynamic_cast正是运用RTTI进行转换,属于运行时类型检查. 2) d ...

  3. python reduce & map 习题

    基于廖雪峰教程作业 http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317 ...

  4. iOS 递归锁

    原理:递归锁也是通过 pthread_mutex_lock 函数来实现,在函数内部会判断锁的类型.NSRecursiveLock 与 NSLock 的区别在于内部封装的 pthread_mutex_t ...

  5. Cocos2d-x中使用第三方so库

    项目中假设使用到第三方的SDK,大多数是以.so动态共享库的文件打包给我们使用.怎样使用他们,见以下分析. 1.获得库文件 假如我们得到的库文件是libxxx.so(注:关于.so文件的命名方式,可百 ...

  6. python 函数的进阶

    1. 动态参数 位置参数的动态参数: *args 动态接收参数的时候要注意: 动态参数必须在位置参数后面 顺序: 位置参数, 动态参数*, 默认值参数 例子: def chi(a, b, *food, ...

  7. Window系统下MongoDB安装及远程访问

    1.编辑mongodb 安装文件夹bin\mongod.cfg 把bindIP 改为 127.0.0.1, 192.168.1.180(局域网IP) 可以参考https://blog.csdn.net ...

  8. full stack on the road

    Full Stack, I'm coming. 有人说全栈只是个理想情况,但我不这么认为,因为好多思想是想通的, 比如 OO.函数式编程.设计模式... 也有人说搞全栈的人样样普通,可是为嘛我在学习j ...

  9. JS分段传输数据

    <SCRIPT language=javascript> file://数据拆分,并放到相应的hidden域中,在Form的onSubmit事件中激发 function fnPreHand ...

  10. sql 2008数据事务日志已满处理方法

    突然发现sql 2008出现错误:数据库 'mybase_db' 的事务日志已满.若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc ...