博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++与JAVA的区别
阅读量:5815 次
发布时间:2019-06-18

本文共 1023 字,大约阅读时间需要 3 分钟。

Java和C++最显著的区别体现在对象的处理上。Java中,对象变量在内部被当作指针处理。Java文献指出将对象变量作为引用,不过它们与C++中的引用并不完全相同。所谓引用,就是一个介于指针和变量之间的东西。

---------正是有这个本质的区别,才会很多JAVA,OK 的代码,再c++里面确实错误的.  ------java 的引用概念和 c++  引用不是同一个意思。    java 的引用和c++ 的指针,比较类似。

  • 在 C++ 的声明中,一个类名可以用来声明一个此类对象的值. Java 里没办法做到这点. 在Java里对象不是值. 在 Java 的声明中,一个类名声明的是对此类的一个对象的引用. 而在 C++ 里与之等价的做法是用 "*" 来声明一个指针.
  • 在 C++ 里,"."操作符将一个对象作为一个左操作参数来访问这个对象的成员. 因为对象在 Java 里不是值,所有的对象都通过引用来访问,刚才的做法在 Java 里是无法实现的. 在 Java 里,"." 操作符是将一个对象的引用作为左操作参数来访问这个对象的成员.在C++中和这种做法等价的是 "->".

 

例子:

     c++ :  string  a = null--error   错误发生的原因是 string源码的默认构造函数不支持。 如果string 默认构造函数支持,其实也是可以的(因为他编译是OK的,说明语法没有问题,运行的时候报错,说明构造函数不支持而已)

string 默认构造函数源码:

__CLR_OR_THIS_CALL basic_string(const _Elem *_Ptr)
: _Mybase()
{// construct from [_Ptr, <null>)
_Tidy();
assign(_Ptr);    // 因为_Ptr 是 NULL 这里回出错
}

               string* a =null  ---ok   指针可以为空
    java     String  a=null  ----ok    Java中,对象变量在内部被当作指针处理 

参考文献: 

http://zh.wikipedia.org/wiki/Java%E5%92%8CC%2B%2B%E7%9A%84%E5%B0%8D%E7%85%A7
http://bbs.csdn.net/topics/190137939

转载于:https://www.cnblogs.com/porter/p/4164538.html

你可能感兴趣的文章
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>
如何用纯 CSS 为母亲节创作一颗像素画风格的爱心
查看>>
Linux基础命令---rmdir
查看>>