C++ const 类对象相关备忘

我一直都觉得java final关键字和 c++ const关键字的作用比较相近, 通过对c++ 更深入的学习, 渐渐知道了他们的一些区别.

      

1. Java final 是能修饰class, c++ const虽然也能写在class 前面, 但是貌似没作用. (不是很确定)

 

2. c++ const 修饰的类对象保护要好于 java final

Java:

final ClassA a = new ClassA();

     a = b;           //error: 常量是不能左值修改的

     a.setValue(10);    //ok: 修改对象a的成员变量却是可以的, 这样就不是很符合用final 的初衷了

     a.getValue();      //ok

 

c++:

     const classC c();

     classC d();

     c = d;           //error: 常量是不能左值修改的

     c.setValue(10);    //error: setValue方法必须是const, 并且setValue 方法不能修改 对象c 成员变量

     d.setValue(10);    //ok: setValue 方法是不是 const 都可以, 并且 setValue 方法能修改对象 d 的成员变量

 

ps: ClassA, classC 分别是java c++ 的类, a, b, c d 是类对象, setValue 方法是改变这些类对象的某个成员变量.

 

以上可以看出 c++ const 类对象, 只能调用其 const 的方法, 并且这些 const 方法是不能修改成员变量的, 这个const 方法可以被 const 类对象调用.

 

a.setValue(10) 可以执行, 而运行c.setValue(10) 是错误的, 一对比就知道 c++ 对常量类对象的保护是好于 java .

 

C++  类中像getValue 这样的方法, 基本可以用const 修饰, 加上 inline 就更好了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值