• Java和C++的区别杂记


    1.java中的作用域描述符(类比于C++是通过"."来实现,Java中"类名.静态成员名",C++中"类名::静态成员名"

    2.java中子类中不能修改继承到的成员的权限,但是C++中是可以的。

    3.java中接口中声明的函数前需要加public

    4.static方法,java中通过"类名.方法名"直接调用,C++中是使用作用域描述符"::"

    5.java中声明的abstract抽象类可以值实例化interface的部分成员方法。

    6.java中子类对象赋值给父类(或者是N级父类)直接体现出多态,而C++中的虚函数才能体现出多态。

    7.java和C++中的异常相对于C而言,C中若子函数返回错误,错误值需要层层向上传递,最终程序由用户控制结束。而异常可以直接结束,省去了上层函数层层判断。

    8.java中除了8种基本类型外其它的都是引用数据类型,对象A=对象B,只是又对那片存储区多增加了一个引用而已,C++中应该是值传递的。

    9.java中的protected权限表示:本包、其它包的子类内部可以访问,C++中的protected表示只有子类中可以访问。

    10.java中只有单继承,C++中有多继承。

    11.java中定义模板类的方式:AAA<T>,C++中定义模板类的方式:template<typename T> class AAA

    12.若子类中复写了父类中的方法,但是还想调用父类中的方法,java中:super.父类方法(),C++中:Parent::父类方法().

    13.java中不能像C/C++那样在类外定义全局变量,eg int a = 10; java中的操作都需要在类中。

    14.java中无unsigned关键字,例如unsigned int a = 10; 编译不过。注意java中只有这8种基本类型,不存在与unsigned组合:boolean byte char short int long float double。java中的只有boolean和char是unsigned的。java不像C/C++那样进行普通变量的类型转换,例如java中char a=10; int b=-1; if (a > b) 是成立的。

    15.C++中没有指明类成员的权限默认是private的,java中没有指明默认是default的(本包可以访问)。

    16.java中没有析构函数(不用指定析构函数,~ClassName()指定编译也报错),C++中有析构函数。

    17.C++中的静态成员变量必须要在类外初始化,而Java可以在类中定义时就初始化,普通成员变量也可以。

    #include <iostream>
    using namespace std;
    
    class Stu {
        static int a = 10;
    };
    
    int main() {
        return 0;
    }
    
    /*
    $ g++ -std=c++11 test.cpp -o pp
    test.cpp:9:17: error: ISO C++ forbids in-class initialization of non-const static member ‘Stu::a’
      static int a = 10;
                     ^
    ubuntu@ubuntu:~/Android_work/message_project_my$ g++ test.cpp -o pp
    test.cpp:9:17: error: ISO C++ forbids in-class initialization of non-const static member ‘Stu::a’
      static int a = 10;
                     ^
    */
    View Code

    18.abstract关键字是java中的,C++中无此关键字,C++中使用纯虚函数来实现抽象类

    class Human {
    public:
        virtual void eating() = 0;
    };
    
    // virtual表示要体现出多态。而Java中直接就体现出多态。
    // = 0;表示是纯虚函数,包含纯虚函数的类是抽象类。Java中没有=0这样的操作,abstract修饰成抽象类。
    View Code

    19.java中调用父类的构造方法使用的是super(), C++中使用的是初始化列表,例如: Man():Person(10)  

  • 相关阅读:
    atomQQ 笔记 之 好友列表与群列表
    atomQQ 笔记 之 列表元素的异步加载
    android 屏蔽指定activity启动(程序锁)
    Android 创世纪 第三天
    腾讯WebQQ 3.0 密码、验证码加密算法分析
    程序员技术练级攻略
    关于“网上社会实践”网站数据库的设计
    为什么程序员新手要考虑接单?
    关于“网上社会实践”网站的设计
    最近累死人的校园招聘20110928
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10663452.html
Copyright © 2020-2023  润新知