Both Java and C++ support object oriented programming, yet there are differences between them. To begin with, Java is a pure object oriented programming language; therefore, everything is an object in Java (single root hierarchy as everything gets derived from
java.lang.Object). On the contrary, in C++ there is no such root hierarchy. C++ supports both procedural and object oriented programming; therefore, it is called a hybrid language.
Following are the major differences between Java and C++:
Java does not support pointers, templates, unions, operator overloading, structures etc.
The Java language promoters initially said "No pointers!", but when many programmers questioned how you can work without pointers, the promoters began saying "Restricted pointers." Java supports what it calls "references". References act a lot like pointers in C++ languages but you cannot perform arithmetic on pointers in Java. References have types, and they're type-safe. These references cannot be interpreted as raw address and unsafe conversion is not allowed.
|C++ supports structures, unions, templates, operator overloading, pointers and pointer arithmetic.|
|Java support automatic garbage collection. It does not support destructors as C++ does.||C++ support destructors, which is automatically invoked when the object is destroyed.|
|Java does not support conditional compilation and inclusion.||Conditional inclusion (#ifdef #ifndef type) is one of the main features of C++.|
Java has built in support for threads. In Java, there is a
||C++ has no built in support for threads. C++ relies on non-standard third-party libraries for thread support.|
|Java does not support default arguments. There is no scope resolution operator (::) in Java. The method definitions must always occur within a class, so there is no need for scope resolution there either.||C++ supports default arguments. C++ has scope resolution operator (::) which is used to to define a method outside a class and to access a global variable within from the scope where a local variable also exists with the same name.|
There is no goto statement in Java. The keywords
||C++ has goto statement. However, it is not considered good practice to use of goto statement.|
|Java doesn't provide multiple inheritance, at least not in the same sense that C++ does.||
C++ does support multiple inheritance. The keyword
|Exception handling in Java is different because there are no destructors. Also, in Java, try/catch must be defined if the function declares that it may throw an exception.||While in C++, you may not include the try/catch even if the function throws an exception.|
Java has method overloading, but no operator overloading. The
||C++ supports both method overloading and operator overloading.|
Java has built-in support for documentation comments (
||C++ does not support documentation comments.|
|Java is interpreted for the most part and hence platform independent.||C++ generates object code and the same code may not run on different platforms.|
There are many other subtle differences and similarities in Java and C++. Here, we included the major ones. To read more see the references section at the end.
Hope you have enjoyed reading differences between Java and C++. Please do write us if you have any suggestion/comment or come across any error on this page. Thanks for reading!
The BBC’s technology correspondent Rory Cellan-Jones gets a beer poured for him by a robotic barman - but how long does it take?Row over US ISP customer data salesPosted on Friday March 24, 2017
US politicians have voted to let ISPs gather and sell data about what Americans do online.Ofcom plans instant payback for broadband woesPosted on Friday March 24, 2017
Customers who suffer poor service could get automatic payouts under Ofcom's plan.Courtesy BBC News