C++ Tutorial Index

C++ Tutorial C++ History C++ Installation C++ First Program C++ cin and cout C++ Data type C++ Variable C++ operator C++ Keywords

C++ Control Statements

C++ If C++ Nested if C++ If-else C++ If-else-if C++ Switch C++ Break C++ Continue C++ Goto C++ For loop C++ While loop C++ Do while loop

C++ Functions

C++ Call by Value C++ Call by Reference C++ Recursion Function C++ Inline function C++ Friend function

C++ Arrays

Single dimension array Two dimension array

C++ Strings

C++ Strings

C++ Inheritance

C++ Inheritance Single level Inheritance Multilevel Inheritance Multiple Inheritance Hierarchical Inheritance Hybrid Inheritance

C++ Polymorphism

C++ Polymorphism C++ Overloading C++ Overriding C++ Virtual Function

C++ Pointers

C++ Pointers C++ this pointer

C++ Exception Handling

C++ Exception Handling

C++ Constructors

C++ Constructors Default Constructor Parameterize Constructor Copy constructor Constructor Overloading Destructor

C++ File Handling

C++ File Handling C++ Writing to file C++ Reading file C++ Close file


C Vs C++ C++ Comments C++ Data Abstraction C++ Identifier C++ Memory Management C++ Storage Classes C++ Void Pointer C++ Array To Function C++ Expressions C++ Features C++ Interfaces C++ Encapsulation std::min in C++ External merge sort in C++ Remove duplicates from sorted array in C++ Precision of floating point numbers Using these functions floor(), ceil(), trunc(), round() and setprecision() in C++ C++ References C++ Friend Functions C++ Mutable keyword Unary Operators in C++ Initialize Array of objects with parameterized constructors in C++ Differences between #define & const in C/C++ C++ Program to Implement Shell Sort C++ Program to Implement Merge Sort Storage Classes in C Vector resize() in C++ Passing by Reference Vs. Passing by the pointer in C++ Free vs delete() in C++ goto statement in C and C++ C++ program to read string using cin.getline() C++ String Concatenation Heap Sort in C++ Swap numbers in C++ Input Iterators in C++ Fibonacci Series in C++ C ++ Program: Alphabet Triangle and Number Triangle C++ Program: Matrix Multiplication C++ Program to Print Fibonacci Triangle Stack in C++ Maps in C++ Queue in C++ C++ Bitset C++ Algorithms Priority Queue in C++ C++ Multimap C++ Deque Function Pointer in C++ Sizeof() Operators in C++ C++ array of Pointers free() Vs delete in C Timsort Implementation Using C++ CPP Templates C++ Aggregation C++ Enumeration C++ Math Functions C++ Object Class C++ Queue Initialize Vector in C++ Vector in C++ C++ STL Components Function overloading in C++ C++ Maximum Index Problem C++ find missing in the second array C++ Program to find the product array puzzle C++ Program To Find Largest Subarray With 0 Sum C++ Program To Move All Zeros To The End Of The Array C++ Program to find the element that occurs once C++ Program to find the largest number formed from an array Constructor Vs Destructor C++ Namespaces C++ OOPs Concept C++ Static C++ Structs C++ Try-Catch C++ User Defined Exceptions C++ Virtual Destructor C++ vs C# Malloc() and new in C++ Palindrome Number Program in C++ Snake Code in C++ Splitting a string in C++ Structure Vs Class in C++ Virtual Function Vs Pure Virtual Function C++ Bidirectional Iterators C++ Forward Iterators C++ Iterators C++ Output Iterators C++ Range-based For Loop Converting string into integer in C++ LCM Program in C++ Type conversion in C++ Add two numbers using the function in C++ Advantage and disadvantage friend function C++ Armstrong Number Program in C++ ATM machine program in C++ using functions Binary to Decimal in C++ Bit Manipulation in C++ C++ Constructor C++ Dijkstra Algorithm Using the Priority Queue C++ int into String C++ Signal Handling Decimal to Binary in C++ Decimal to Hexadecimal in C++ Decimal to Octal in C++ Factorial Program in C++ Function in C++ Hexadecimal to Decimal in C++ Octal to Decimal in C++ Reverse a Number in C++ Structure Vs Class in C++ C++ Forward Iterators C++ Output Iterators C++ Prime number program Constructor Overloading in C++ Different Ways to Compare Strings in C++ Program to convert infix to postfix expression in C++ SET Data Structure in C++ Upcasting and Downcasting in C++ Reverse an Array in C++ Fast Input and Output in C++ Delete Operator in C++ Copy elision in C++ C++ Date and Time C++ Bitwise XOR Operator Array of sets in C++ Binary Operator Overloading in C++ Binary Search in C++ Implementing the sets without C++ STL containers Scope Resolution Operator in C++ Smart pointers in C++ Types of polymorphism in C++

C++ Features

C++ is a general-purpose programming language that evolved from the C language to include an object-oriented paradigm. It is a compiled and imperative language.

Features of C++

Object-Oriented Programming

Object-oriented programming language concepts:

  • Class
  • Objects
  • Encapsulation
  • Polymorphism
  • Inheritance
  • Abstraction

Class: A Class is a C++ building piece that leads to Object-Oriented programming. It is a user-defined data type with its own set of data members and member methods that can be accessed and used by setting up a class instance.

Objects: An Object is a recognizable thing that has certain qualities and behaviours. A Class's instance is an Object.


class Man
char name[20];	
int id;
void getdetails(){}
int main()
Man M1; // M1 is a object

Encapsulation: Encapsulation is the process of encapsulating data and information in a single entity. Encapsulation is described as the coupling of data and the functions that replace it in object-oriented programming.

Abstraction: One of the most fundamental features of object-oriented programming in C++ is data abstraction. Abstraction refers to revealing only the most important information while hiding the intricacies.

Polymorphism: Polymorphism refers to the fact that something exists in multiple forms. Polymorphism, in simple words, is the ability to present a message in multiple formats.

Inheritance: Inheritance refers to the ability of one class to inherit features and traits from another class. One of the most important features of object-oriented programming is inheritance.

Machine Independent

A C++ executable is not platform agnostic (compiled Linux applications will not run on Windows), but it is machine agnostic. Let us look at an example to understand this C++ feature better. Assume you've built a piece of code that runs on Linux, Windows, and Mac OS X, making C++ Machine Independent.


It is a simple language in the sense that programs can be broken down into logical units and fragments, and it supports a large number of library functions and data types. In addition, the C++ Auto Keyword makes things easier.


#include <bits/stdc++.h>
using namespace std;
int main()
auto a_int = 10;
auto a_bool = false;
auto a_float = 30.43;
auto ptr = &a_float; 
cout << typeid(a_bool).name() << "\n";
cout << typeid(an_int).name() << "\n";
return 0;



High-Level Language

Unlike C, which is a mid-level programming language, C++ is a high-level language. Working with C++ is easy since it is a high-level language that is closely related to the human-comprehensible English language.


C++ may serve as a foundation for a variety of other programming languages that enable object-oriented programming. Simula 67, the first object-oriented language, lacked simulations, thus Bjarne Stroustrup chose to create C++.


C++ is unmistakably a case-sensitive programming language. To take input from the input stream, for example, cin is utilized. But what if "Cin" doesn't work? Other languages, such as HTML and MySQL, are case-insensitive.

Compiler Based

Unlike Python, C++ is a compiler-based language. C++ applications are compiled, and their executable files are utilised to run them. As a result, C++ is a speedier programming language than Java and Python.

Dynamic Memory Allocation

The variables are assigned dynamical memory space when the programme executes in C++. Variables are allocated in the stack area within the functions. We often don't realise how much memory is necessary to store certain information in a defined variable until it's too late, and the quantity of required memory may be established at run time.

Memory Management

  • In C++, we can allocate memory for a variable or array during runtime. There is a term dynamic memory allocation for this.
  • The compiler handles the memory assigned to variables in other programming languages, such as Java and Python. In C++, however, this is not the case.
  • In C++, dynamically allocated memory must be manually allocated when it is no longer needed.


#include <cstring>
#include <iostream>
using namespace std;
// Driver Code
int main()
int num = 5;
float* pt;
// Memory allocation of
// num number of floats
pt = new float[num];
for (int x = 0; x < num; ++x) {
*(pt + x) = x;
cout << "Display the GPA of students:"<< endl;
for (int x = 0; x < num; ++x) {
cout << "Student" << x + 1<< ": " << *(pt + x)<< endl;
// Pt memory is released
delete[] pt;
return 0;


Display the GPA of students:
Student1: 0
Student2: 1
Student3: 2
Student4: 3
Student5: 4


  • Multitasking is a feature that allows your system to run two or more programmes at the same time. Multithreading is a specialised kind of multitasking. Multitasking may be divided into two types: process-based and thread-based.
  • Process-based multitasking manages the execution of many applications at the same time. Thread-based multitasking is concerned with the multiprogramming of similar software parts.
  • Multithreaded applications are not supported by C++ by default. Instead, it relies only on the operating system to provide this functionality.