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

  • 相关阅读:
    GO语言面向对象06---面向对象练习01
    GO语言面向对象05---接口的多态
    GO语言面向对象04---接口的继承
    GO语言面向对象03---接口与断言
    GO语言面向对象02---继承
    Go语言练习---判断闰年以及根据现在的秒数求现在的年月日
    [操作系统] 线程管理
    [操作系统] 进程的状态
    [操作系统] 进程控制块
    关于这次计算机设计大赛
  • 原文地址:https://www.cnblogs.com/porter/p/4164538.html
Copyright © 2011-2022 走看看