美文网首页java和c++的区别
java中的final 和C++中的const

java中的final 和C++中的const

作者: c7d122ec46c0 | 来源:发表于2017-04-18 11:29 被阅读0次

之所以写这个实在是有感于C++ 中const的和java中final的有某些类似的情况
初学java的人肯定有这种困惑,final作用于基础类型时的确是不可变的,但作用于对象引用时,却发现只能确保这个引用不能指向其他对象,当然从语义上来看的确没问题,在java中创建不可变对象是一个复杂的过程(参考String类的实现),然后在C++中创建一个不可变对象却非常容易,不可变对象在很多方面有着优势(安全等)。下面就讲讲这两个关键词的异同点。

指向const对象的指针和引用

//指向const对象的指针
const Test t(10);
const Test *p = &t;
p->a = 12// error 假设Test 类有a属性
//const  引用
const int &p = 1;
p = 2;//error

指向const对象的指针和引用确保了不能通过这个指针或者引用修改对象。

const 类型的指针

int a = 1;
int b = 2;
int *const p1 = &1;
int *p2 = &b;
p1 = p2 //error
*p1 = 3;//ok

指向const 对象的 const 指针

const int i = 3;
const int * const p = &i;

指向const 对象的 const 指针 能够保证不能通过改指针修改对象和修改指针指向。

java 中的final 引用

 final Test a = new Test(3);
 a.a = 4;

不难看出 在java的final引用跟C++中的const指针效果上是一样的。

总结

通过以上的分析我们可以看到在java相比C++少了一种场景,比如某个对象实际是可变的,我们需要限制其他用户对他做出改变,在c++ 可以传递const 指针 或者const 引用,而在java中并不存在现成的机制去确保我们通过引用无法修改一个可变对象。(好久没看c++了,如果有什么问题欢迎大家指出)

相关文章

  • java final关键字

    final的作用类似C/C++的const但稍微有些差异。 在Java中,final关键字可以用来修饰类、方法和变...

  • java中的final 和C++中的const

    之所以写这个实在是有感于C++ 中const的和java中final的有某些类似的情况初学java的人肯定有这种困...

  • JAVA的final和C++的const

    最近学习JAVA,发现final和C++的const把我弄得有些迷糊了,所以就写一篇来总结下,final和cons...

  • Java编程思想重点笔记

    1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方...

  • typescript 日志1

    typescript中let相当于JavaScript中的var,const 相当于java中的final,所定义...

  • dart注意点记录

    const 和final : const变量是编译时常量(const变量隐式为final变量),它在编译过程中初始...

  • Dart中的const和final

    相同点必须初始化(初始化时机可能会不同,看不同点),初始化后都是只读的,不可变 具体看下面例子(声明类型的地方可以...

  • Dart 中的 const 和 final

    const const 用在 = 左边 当 const 用在 = 左边,其作用是声明变量,它要求必须在声明变量时赋...

  • Dart 中的final和const

    一、final final 用来修饰变量,只能被赋值一次,运行时赋值。也就是当程序运行到这里才会被赋值。 二、co...

  • 2018-11-14号相关学习资料

    java中final关键字的作用深入理解Java中的final关键字java中的final如何使用和理解PPT和1...

网友评论

    本文标题:java中的final 和C++中的const

    本文链接:https://www.haomeiwen.com/subject/kvitzttx.html