C++ 与Java差异总结

工作需要,要学习Qt,之前学过Java,我想C++和Java对比着来学习应该可以很快上手。

C++的核心概念:编译单元,头文件,目标文件,库

Qt:信号和槽机制,foreach

Qt中没有用到的c++概念:模板类,模板函数的定义    共用体类型,异常   这三个就放在以后再学

差异:

1. C++不会在运行时检验数组是否越界,没有垃圾回收机制

2.C++没有为所有的类提供一个可以从中继承出来的一般类object。

3.Qt则为所有的类型提供了一个简单的基类

4.Java中的“接口”的概念,只能用C++的纯虚函数来表示

5.C++不允许在类定义中初始化成员变量

6.C++中没有能够只想基类的super关键字,如需调用,可以在这个函数的名字前加一个由基类的名字和“::”操作符构成的前缀

7.C++支持多重继承,一个类可以同时从多个类中派生出来

语法形式:  class DevicesClass: public BaseClass1,public BaseClass2,...,

                 publicClassN

        {

        ...

        };

8.C++支持局部对象和全局对象。因为这一支持,C++也提供了自动构造和析构。这导致了对构造函数和析构函数的调用,(对于堆对象)就是内存的分配和释放

9.在C++中,指针就是一个可以存储对象的内存地址的变量。在概念上与Java和C#中的引用非常相似,只不过还可以使用指针遍历整个内存

10.C++也支持“引用”的概念,引用存储的也是一个对象的地址值

“引用”和“指针”的不同点:

           1> 声明用的是“&”而不是“*”

             2> 引用必须是初始化过的,且不能再赋值

             3> 可直接访问与引用相关联的对象,无“*”或“->”这样的特殊语法

             4> 引用不能为空

11.C++数组大小必须是一个常数值

如果想要创建可变大小的数组:

            1> int *fibonacci = new int[];

            2>std::vector<int>fibonacci(n);//使用标准std::Vector<T>类

            3>QVector<int>fibonacci(n)     //使用Qt的QVector类

12.C++中引用了4种具有准确语义的新强制转换类型

            1>static_cast<T>()

            2>dynamic_cast<T>()

            3>const_cast<T>()

            4>reinterpret_cast<T>()

13.C++允许重载函数,另外还支持运算符重载

14.C++中所有的类型都可以用作“引用类型”,并且那些具有复制性的类型也还可以用作“值类型”

int *i = new int(5);

int *j = new int (10);

*i = *j;

      

  

时间: 2024-08-27 11:46:41

C++ 与Java差异总结的相关文章

C# VS JAVA 差异

1. 静态构造函数 C#中有静态构造函数, Java中没有静态构造函数.其实Java中有一个类似静态构造函数的东东,称作静态初始化,或者静态代码块,可以通过这样的代码实现相同的功能: 但是Java中静态代码块和C#静态构造函数还是不一样的.C#中静态构造函数在其他静态成员初始化后再执行,而java中静态代码块和其他静态成员谁在先谁就先执行. 1 class Parent{ 2 public static StaticVariable staticVariable = new StaticVari

从Java/Android到Swift iOS开发:语言与框架对比

本文是我在『移动前线』微信群2016年4月28日的分享总结整理. 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还不够成熟没有正式发布.2016年初我们正式使用swift开发上线了销售助手App产品,积累了比较丰富的swift项目实战经验,开源框架都是用的swift版本,大量使用了面向协议和函数式编程.iOS App开发人员基本都是以前安卓版本的开发人员,同时维护安卓和iOS 2个版本,效率很高. 今天分享的主题是Jav

Android &amp;Swift iOS开发:语言与框架对比

转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_source=infoq&utm_medium=articles_link&utm_content=link_text 从Android到Swift iOS开发:语言与框架对比 我从2009年开始做Android开发,开始接触Swift是在2014年底,当时组里曾经做过一个Demo App,感觉技术还

Android与Swift iOS开发:语言与框架对比

Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有SwiftyGPIO库,可以通过GPIO控制一些硬件. Object C is old and ugly,oc是1983年苹果推出的,过于陈旧和臃肿. Swift语法类似Scala,Javascript ES6, Java,OC, C++, Python 这是tiobe发布的编程语言排行 Swift支持

Java(C#)基础差异-语法

1.long类型 Java long类型,若赋值大于int型的最大值,或小于int型的最小值,则需要在数字后加L或者l,表示该数值为长整数,如long num=2147483650L. 举例如下: public static void main(String[] args) { /* * 对于long类型,若赋值大于int型的最大值,或小于int型的最小值, 则需要在数字后加L或者l,表示该数值为长整数 */ // 1.定义普通long类型数据 long longnum1 = 123; // 2

C#与Java多态方面的语法差异

C#与Java多态方面的语法差异 2016-11-29 Java代码: public static void main(String[] args) { Mother mother=new Mother(); mother.showName(); Mother human=new Son(); human.showName(); Son sona=new Son(); sona.showName(); } public class Mother { public void showName(){

Java和CSharp的类继承的执行过程的差异

Java和CSharp的类继承的执行过程的差异: Java的执行过程:子类先初始化父类的成员→初始化父类的构造函数→返回子类执行初始化子类的成员→初始化子类构造函数. CSharp的执行过程:子类先初始化子类的成员→初始化父类的成员→初始化父类的构造函数→初始化子类的构造函数. 假设:A类继承自B类. Java的执行过程:A类先初始化B类的成员→初始化B类的构造函数→ 初始化A类的成员→初始化A类的构造函数. CSharp的执行过程:A类先初始化A类的成员→初始化B类的成员→初始化B类的构函数→

java File的getLastModified在不同操作系统下面存在差异

java对文件读取修改时间(getLastModified())在不同的操作系统下存在差异 //1.在windows下,返回值是毫秒级别,不存在问题 //2.在Linux下,返回的值是毫秒值,但是会舍掉毫秒数字,变成三个零,如1403690647983 在LInux下会是1403690647000 java File的getLastModified在不同操作系统下面存在差异

java File的getLastModified在不同操作系统以下存在差异

java对文件读取改动时间(getLastModified())在不同的操作系统下存在差异 //1.在windows下,返回值是毫秒级别,不存在问题 //2.在Linux下,返回的值是毫秒值,可是会舍掉毫秒数字,变成三个零,如1403690647983 在LInux下会是1403690647000