zoukankan      html  css  js  c++  java
  • C++与JAVA的区别

    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

  • 相关阅读:
    javaScript中的find()方法和返回数据的内存指向
    高级函数 filter map reduce 的使用
    for ... in and for ... of 理解
    git 解决冲突问题
    H5内唤醒百度、高德APP
    HTML 5标准中最新引入的template标签介绍
    jquery选择器使用
    ajax封装函数
    常用正则表达式
    JS-----事件、image对象
  • 原文地址:https://www.cnblogs.com/porter/p/4164538.html
Copyright © 2011-2022 走看看