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

Miscellaneous

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 Char Array to String in C++ Constructor Overloading in C++ Default arguments in C++ Different Ways to Compare Strings in C++ Dynamic Binding 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++ Exception Handling in C++ vs Java Const Keyword in C++ Type Casting in C++ Static keyword in C++ vs Java Inheritance in C++ vs Java How to concatenate two strings in C++ Programs to Print Pyramid Patterns in C++ swap() function in C++ Structure of C++ Program Stringstream in C++ and its applications rand() and srand() in C / C++ C++ Ternary Operator C++ Scope of Variables While Loop Examples in C++ Star pattern in C++ using For Loops For Loop Examples in C++ Do-While Loop Examples in C++ Top 5 IDEs for C++ That You Should Try Once Assertions in C/C++ C++ Convert Int to String Continue in C++ While loop Diamond Pattern in C++ using For Loop How to Reverse a String in C++ using Do-While Loop How to Reverse a String in C++ using For Loop How to Reverse a String in C++ using While Loop Infinite loop in C++ Loops in C++ Returning Multiple Values from a Function using Tuple and Pair in C++ wcscpy(), wcslen(), wcscmp() Functions in C++ Auto keyword in C++ C++ 11 vs C++ 14 vs C++ 17 C++ STL (Standard Template Library) Differences Between C Structures and C++ Structures Divide by Zero Exception in C++ Dynamic Constructor in C++ Dynamic Memory Allocation in C++ Find the Size of Array in C/C++ without using sizeof() function Floating Point Operations and Associativity in C, C++ and Java Hello World Program in C++ How to create a table in C++ How to Setup Environment for C++ Programming on Mac Implementation of a Falling Matrix in C++ Message Passing in C++ Pointer to Object in C++ Templates in C++ vs Generics in Java Ways to Copy a Vector in C++ What does Buffer Flush mean in C++ sort() function in C++ Structure Sorting (By Multiple Rules) in C++ Similarities between C++ and Java std::distance in C++ Array program in C++ C++ Tricks for Competitive Programming Desired Capabilities in Selenium Web Driver in C++ Socket Programming in C++ Template Specialization in C++ Classes and Objects in C++ Convex hull Algorithm in C++ DES in C++ C++ vardiac() function Difference between Two Sets in C++ Difference between Exit and Return Structured Binding in C++ Differences between Local and Global Variable Bitwise Operator vs Logical Operator Difference between OOP and POP in C++ Fork in C++ Functors in C++ How to call a void function in C++ How to create a directory or folder in C/C++ How to create a library in C++ How to create a stack in C++ How to create the Processes with Fork in C++ How to Handle Divide by Zero Exception in C++ Lambda Expression in C++ Pattern programs in C++ Roadmap to C++ Programming Substring in C++ Virtual base class in C++ Bits stdc++.h in C++ Top 14 Best Free C++ IDE (Editor & Compiler) for Windows in 2022 Bitmasking in C++ Auto Keyword in C++ Features of OOPS in C++ Hospital Management Project in C++ How to Declare Unordered Sets in C++ How to Sort an Array in C++ Include Guards in C++ Iostream in C++ Method overriding in C++ How to run program in turbo c++ How to Use Getline in C++ Leap Year Program in C++ Naming Convention in C++ New Operator in C++ Nullptr in C++ Object Slicing in C++ Principles of Object-Oriented Programming in C++ Processing strings using std string stream in C++ Pure Virtual Function in C++ With Example Program Random Number Generator in C++ Singleton Design Pattern in C++ Size_t Data Type in C++ Skyline Problem in C++ System() function in C++ Web Development in C++ Data Hiding in C++ Difference between exit() and _Exit() in C++ Hashing in C++ Object in C++ Sum of all Elements between k1’th and k2’th Smallest Elements Virtual class in C++ Vector Size in C++ Top best IDEs for C/C++ Developers in 2022 Tensorflow in C++ Sliding Window Technique in C++ Reverse String Word-Wise in C++ Returning a Function Pointer from a Function in C/C++ RTTI in C++ Pthreads or POSIX Threads in C++ Reserved Keywords in C++ Passing a Vector to a function in C++ 10 Best C and C++ Books for Beginners & Advanced Programmers Add two numbers represented by two arrays in C++ Array of Object in C++ C++ Program For FCFS Containership in C++ Counting Frequencies of Array Elements in C++ Decltype type Specifier in C++ Dynamic _Cast in C++ Difference between int main() and int main(void) in C/C++ Depth First Search Program to Traverse a Graph in C++ Features and Use Of Pointers in C/C++ Fread Function in C++ Programming Fscanf Function in The C++ Functions in C++ With Types and Examples Gmtime Function in C/C++ How is Multiset Implemented in C++ How to Build a Program in C++ How to Declare a 2d Array Dynamically in C++ inheritance Program in C++ int Max and int Min in C/C++ is It Fine to Write Void Main Or Main in C/C++ How to create a button in C++ abs() function in C++ Compile Time Polymorphism in C++ Division in C++ Factorial of a Number in C++ using while Loop Multiset in C++ 4 Pillars of OOPs Approach in C++ Backtracking Time Complexity in C++ C++ Global Variable C++ Pipe Tutorial Observer Design Pattern in C++ Private Inheritance in C++ Pthread in C++ Parameters SDL library in C++ with Examples Pointers in C++ Ascending order in C++ How the value is passed in C++ Call by Pointer in C++ Constexpr in C++ Deadlock in C++ Design Patterns in C++ Factory Method for Designing Pattern in C++ How to calculate size of string in C++ Name Mangling and extern in C++ Preventing Object Copy in C++ Program that produces different results in C and C++ Quick Sort in C++ Single Handling in C++ Type difference of Character literals in C VS C++ Use of Inheritance in C++ User-defined literals in C++ Vector methods in C++ Void * in C and C++ Zombie and Orphan Process in C++ Isprint() in C++ List and Vector in C++ List iterators in C++ Merging Two Vectors in C++ Sleep function in C++ Stoi function in C++ String erase() in C++ String Trim in C++ When should we write own Assignment operator in C++ C++ tcp client server example C++ tcp server example Early Binding and Late Binding in C++ Factory Design Pattern in C++ Fisher-Yates shuffle algorithm in C++ For Auto in C++ Group anagrams in C++ How to convert binary string to int in C++ How to convert string to float in C++ How to remove space from string in C++ How to use pair in C++ How to use the string find() in C++ Dynamic Casting in C++ 2D Vector Initialization in C++ C++ GUI Visual Studio C++ IPC C++ Macro Function Example C++ Permutation Overloading Stream Insertion in C++ Overloading array Index operator in C++ Operators that cannot be overloaded in C++ Operator overloading in C++ isprint() function in c++ Is_trivial function in C++ Is assignment operator Inherited in C++ div() function in C++ Default Assignment Operator and References in C++ Copy Constructor vs Assignment Operator in C++ Conversion Operator in C++ Array sum in C++ STL C++ Define Macro C++ Design C++ Factory Pattern TCP Client Server Example in C++ Convert String to Uppercase in C++ exit() and _Exit() in C and C++ Initializer list in C++ Iterator invalidation in C++ Lower bound in C++ Modulus of Two float numbers or double number Pass by value in C++ Set insert function in C++ Std partition_point in C++ Unary Operator Overloading in C++ Using Default Arguments with Virtual Functions Virtual Functions and Runtime Polymorphism What is endl in C++ What is Unary Operator Overloading in C++ Which operators cannot be overloaded in C++? rint(), rintf(), rintl() in C++ Stack size in C++ String append() function in C++ String push_back() in C++ String replace() in C++ Transform function in C++ Unique in C++ Unordered_map in C++ Binary String to Int C++ Boost C++ ctime() function in C++ Difference Between Overloading and Overriding in C++ Exception handling in constructor and destructor in C++ Explain class template in C++ Fesetround() and Fegetround() in C++ and their application Gets() and Puts() in C++ Hypot(), hypotf() and hypotl() in C++ Kadane Algorithm in C++ Log function in C++ Map of Pairs in STL Map vs unordered_map in C++ Nearbyint() Function in C++ Pair in C++ Access Specifiers in C++ Add Two Numbers in C++ Using Class Benefits of Operator Overloading in C++ C++ Socket Programming Windows C++ Program for Addition of Two Numbers Using Functions C++ Programming Examples C++ Protected Inheritance C++ Return Object Static Data Members in C++ Program for COPY Constructor in C++ Association in C++ C_str in C++ Boost libraries in C++ C++ macro function Assignment Operator Overloading in C++ Automatic Storage Class in C++ Function Object in C++ C++ Move Constructor Cast in C++ C++ 11 Lambda C++ Multithreading Bottom-up Approach in C++ C++ Program to Divide the String Into N equal Parts Gray Code to Binary Code in C++ How to get the value of pi in C++ Multimap value_comp() function in C++ Vector of Vectors in C++ Naïve Bayes Algorithm in C++ f 10 C++ Programming Tricks You Should Know btowc() function in C++ forward_list::cend() in C++ Unordered_multimap max_load_factor() function in C++ Cpp_int in c++ Dynamic Objects in C++ FLOCK() FUNCTION IN C++ Generate Random Double Numbers in C++ How to Assign Infinity to a Number in C++ Jump statements in C++ Multipath inheritance in C++ Out of Range Exception in C++ Size of Class in C++ Size of string in C++ std::binary_negate in c++ Thread_local in C++ Tokenizing a String in C++ Ancestors of a Node in Binary Search Tree C++ program for Double to String Conversion C++ Program to Demonstrate Use of Formatting Flags on Float Output Clamp in C++ K-Dimensional Tree in C++ Mutable Lambda in C++ Power Set in C++ Program to Find Sum of Geometric Progression Std::Back_inserter in C++ Strpbrk() function in C++ Size of int in C++ TYPES OF MANIPULATORS IN C++ Double colon in C++ How to sort vector in C++ How to use Setprecision in C++ How to write a Vector in C++ Insertion in Splay Tree in C++ Merge Sort Algorithm in C++ Printing a Character using ASCII value in C++ Regex in C++ Size of Data Types in C++ Abstract Factory Design Pattern in C++ Sqrtf() function in C++ Static Casting in C++ Using Range in Switch Case in C++ wcstoimax() and wcstoumax() function in C++ What is float in C++ What is the Diamond Problem in C++ Best way to learn C++ ios setstate() function in C++ Nested Namespace in C++ Single Inheritance in C++ std::fixed, std::scientific, std::hexfloat, std::defaultfloat in C++ StringStream in C++ for Decimal to Hexadecimal and back The OFFSETOF() macro in C++ Semaphores in C++ Seekg in C++ stacktrace Header file in C++ 23 std::future in C++ std::unary_negate() in C++ Difference between std::endl and \n in C++ Iswspace Function in C++ Difference between std-next and std::advance in C++ Hiding of all overloaded methods with same name in base class in C++ C++ program to concatenate two strings using operator overloading Difference between array::fill() and array::swap() in C++ Difference between Friend Function and Virtual Function in C++ Semaphores in C++ UDP server- client implementattion in C++ What is long long in C++ CSV file management using C++ fma() function in C++ Toggle bits of a number except first and last bits in C++ Trailing Return Type C++ 11 Binary search implementation in C++ Different Versions of C++ What is Cascading in C++ Background Colour in C++ BOOL DATATYPE IN C++ BIT VECTORS IN C++ Literals in C++ Application of pointer in C++ Index with minimum sum of prefix and suffix sums in an array in C++ Maximum sum Bi-tonic sub-sequence in C++ std::optional in C++ C/C++ program for triangular matchstick number COUT COMMAND IN C++ LANGUAGE Adjacency matrix program in C++ language Exception Objects in C++ Difference between Null String and Empty String in C++ Character data type in c++ Constructors in Inheritance C++ Comma Operator Overloading in C++ Typename in C++ C++ Friend Class C++ Exceptions Difference Between C and C++ Double-linked list program in C++ Color Code in C++ CRC Program in C++ Anti-Clockwise spiral traversal of a binary tree in C++ Advantages of OOP in C++ Cryptarithmetic Puzzle in C++ Angular sweep algorithm in C++ Factorial of Large Numbers in C++ endl Function in C++ vfprintf() method in C++ Check if a given number is Pronic in C++ Difference between Fundamental Data Type and Derived Data Types in C++ Different Ways to initialize an unordered_set in C++ Dinic’s Algorithm in C++ How to read whole ASCII File into C++ using std::string? std::unary_negate() in C++ String::npos function in C++ type_traits::is_null_pointer in C++ C++ code to count the local extrema of given array Demlo number (square of 11....1) in C++ Function Template and Class Template in C++ Getline in C++ GUI Design in C++ Hashing Implementation in C++ HIERARCHICAL INHERITANCE IN C++ Hospital Management System in C++ How to Add Header Files in Dev C++? How to cin string in C++ How to compile a C++ program in Visual Studio code Iscntrl in C++ Memento Pattern in C++ Smarandache-Wellin Sequence in C++ The feclearexcept in C++ HashMap in C++ Alexander Bogomolny's UnOrdered Permutation Algorithm in C++ Convex Polygon in C++ Count Univalue Subtrees in C++ Entringer Number in C++ Friends pairing Problem in C++ Klee's Algorithm (Length of the union of segments of a line) in C++ Spaceship Operator(&|t;==>) in C++ Uniform Initialization in C++ Woodall Number in C++ C++ Program to Solve Knapsack Problem Using Dynamic Programming How do you exit from the infinite loop in Turbo C++? How to create a game using C++ language How to do XOR in C++? How to Find Max Value in Array C++ How to get date in C++ Pointer to a Derived Class in C++ C++ program to show runtime exceptions Convert a Singly LinkedList to XOR LinkedList in C++ Creation of Variable in C++ CRTP (curiously recurring template pattern) in C++ Euler Circuits in Directed Graphs Using C++ Final NBA Match pairing in C++ Find pivot in rotated sorted array in C++ How to make a square in C++ How to reduce fractions in C++ std::lerp in C++ Stella Octangula Numbers in C++ Return Statement in C++ Finding the n-th Fortune Number in C++ How to use StringStream in C++ Minimize Count of Unequal Elements at corresponding Indices between give n arrays in C++ std::midpoint in C++ std::transform inclusive scan in C++ std::span in C++ Types of Errors in C++ C++ program to implement the bin packing algorithm Dereference Operator in C++ How to merge multiple std::sets into a single std::set in C++? Stack Clear C++ Structure and Class in C++ Template Definition in C++ Tree Data Structure in C++ Typename in C++ Program in C++ for Beginners Restoring a Shuffled Queue in C++ Print patterns in C++ Hybrid Inheritance in C++ How to use OpenGL in C++? How to Separate a String in C++ Havel-Hakimi algorithm in C++ Find the size of all connected Non-Empty Cells of a Matrix in C++ Burst Sort Algorithm in C++ Basic istream peak() method in C++ Addition of two matrices in C++ What is std reference wrapper in C++? What is std mbrtoc 32 in C++? What is std istreambuf iterator in C++? What is std declval in C++? std rethrow if nested in C++ std regex search in C++ std ctype byname in C++ std call once in C++ std basic ios copyfmt in C++ std atomic ref in C++ Properties of Friend Function in C++ Sophie Germain Prime number in C++ Centroid Decomposition in C++ How to Get the List of All Running Tasks in C++ Programming Questions on Function Overloading in C++ std codecvt in and std codecvt do in in C++ std is constant evaluated in C++ Std put money in C++ Number of ordered pairs such that Ai Aj = 0 in C++ dlsym() function in C++ Isxdigit() function in C++ Difference between Objective C and C++ Menu Driven Program in C++ Undulating Numbers in C++ How to Access Private Variables in C++? Particle Swarm Optimization in C++ Understanding std::ios_base::iword in C++ std::piecewise_construct _t in C++ Toeplitz Matrix in C++ Two-Way Linear Search Algorithm in C++ C++ Concurrency in action C++ integer size C++ Enum class Compare two lists in C++ Command to run C++ Program in terminal Cascading In C++ Static Member Function in C++ with Example C++ Multiple, Multilevel and Hierarchical inheritance Painting Fence Algorithm in C++ Rearrange Distant Barcodes in C++ What are the rules for using an Underscore in a C++ dentifier? std::quoted in C++ Std::memory_order in C++ Std::fisher_f_distribution in C++ Advantages Oops in C++ floor() and ceil() function in C++ Topological Sort in C++ How to get file size in C++ Class Meaning in C++ DIFFERENCE BETWEEN NEW AND DELETE OPERATOR IN C++ New and Delete In C++ Operators in C++ String data types in C++ begin() in C++ Static Library Linking in C++ Stack Unwinding in C++ Singleton Pattern in C++ Shared_ptr in C++ Random Number between 1 and 10 in C++ Initializer in C++ Error Handling in C++ Define Reference in C++ Create a Class in C++ C++ Move Semantics What is Thread Id to Int in C++? What is a Static Member Function in C++? Using Keyword in C++ C++ IDE Linux C++ Mini Project With Source Code and Output All swing components C++ Syntax Link Call By Value And Call By Reference In C++ Const ptr c++ Const_cast C++ Constant Arguments in C++ Example of parameterized constructor in C++ example of user-defined data type Anonymous object in C++ Bank program in C++ Base class and Derived class in C++ Cerr in C++ Cin string in C++ cin.get() in C++ Containers in C++ Control flow statement in C++ coroutine in C++ cstdlib in C++ Difference between encapsulation and Abstraction Difference between template and macro in C++ Emplace_back in C++ Cstdio in C++ Exception specification in C++ Files and streams in C++ Hamming code implementation in C++ Map cbegin() and cend() function in C++ STL Map Emplace_hint() function in C++ STL Naked function calls in C++ Private destructor in C++ Static object in C++ unordered_set in C++ Uses of namespace std in C++ Virtual function and virtual base class in C++ VS Code Setup for C++ Vtable and vptr in C++ fixed() function in C++ How to remove an element from an array in C++ How to take space-separated input in C++ iomanip in C++ Isdigit() function in C++ noexcept in C++ rdbuf() in c++ seekg() function in C++ Seekp() function in C++ Setw() in C++ The diamond pattern in C++ Advantages and Disadvantages of Inheritance in C++ C++ Variables Types Explain Access Specifiers in C++ Anagram Program in C++ AREA OF TRIANGLE IN C++ ARRAY INPUT IN C++ Big Integers in C++ Bitwise Operator in C++ Data Structures Algorithms and Application in C++ EOF Function in C++ Explicit in C++ File Opening Mode in C++ Friend Function in C++ Function Overriding in C++ How to Copy in Turbo C++? How To Use POW in C++ Increment Operator in C++ Inline Functions in C++ Int range in C++ Integer in C++ Linked List in C++ malloc() and calloc() in C++ Maximum Value in Vector in C++ NPTEL Programming in C++ Assignment Solutions SHARED POINTER IN C++ Vector in C++ Stl What is an Object in C++ What is Copy Constructor in C++ Dereferencing a Pointer in C++ fill() Function in C++ map find() function in C++ Associative Containers In C++ C++ generic programming introduction Character Set in C++ Class and Structure in C++ Decltype in c++ Difference Between Abstraction and Interface in C++ File Stream in C++ Final in C++ Final Keyword in C++ Find substring in C++ Flush in C++ Has-A Relationship in C++ How to allocate memory dynamically in C++ How to close turbo C++ in windows 10 How to Use Modulus in C++ How to use Set in C++ Input and Output Operators in C++ Insert Function in C++ MENU DRIVEN PROGRAM IN C++ MOVE SEMANTICS IN C++ OOPs Interview Questions in C++ PARAMETER PASSING IN C++ PUNCTUATORS IN C++ SPLIT FUNCTION IN C++ Stream Classes in C++ Vector declaration in c++ Vector in C++ Virtual Function in C++ Binary Search Tree Program in C++ Built-in Types in C++ API in C++ Returning Object from a Function in C++ C++ Singleton C++ Template Class Declaration and Definition Tree in C++ C++ Type Traits Catch All Exceptions in C++ Lvalue and Rvalue in C++ Move Constructor in C++ Move Semantics in C++ Mutex Lock in C++ Qt in C++ Tutorial STL Algorithms in C++ Access Class members in C++ Designated initializers in C++ Dynamic Initialization of Objects in C++ Inbuilt Functions in C++ Metaclass in C++ Nesting of a member function in C++ Unique_ptr() in C++ Vector erase() function in C++ Vector insert() Function in C++ 10 important concepts of Oops in C++ At in C++ Difference Between Abstraction and Encapsulation in C++ Difference between Function Overloading and Operator Overloading in C++ Exception Specifications in C++ Examples of Destructor in C++ Examples of Hybrid Inheritance in C++ How to declare an Array in C++ How to declare string in C++ Instance variable in C++ Manipulators in C++ Pointer Declaration in C++ preprocessor in C++ Push_Back() Function in C++ Space in C++ String stl in c++ Edmonds Karp algorithm in C++ How to Create Singleton Class in C++ Static Polymorphism in C++ Associative Containers In C++ C++ generic programming introduction Character Set in C++ Class and Structure in C++ Decltype in c++ Difference Between Abstraction and Interface in C++ File Stream in C++ Final in C++ Final Keyword in C++ Find substring in C++ Flush in C++ Has-A Relationship in C++ How to allocate memory dynamically in C++ How to close turbo C++ in windows 10 How to Use Modulus in C++ How to use Set in C++ Input and Output Operators in C++ Insert Function in C++ MENU DRIVEN PROGRAM IN C++ MOVE SEMANTICS IN C++ OOPs Interview Questions in C++ PARAMETER PASSING IN C++ PUNCTUATORS IN C++ SPLIT FUNCTION IN C++ Stream Classes in C++ Vector declaration in c++ Vector in C++ Virtual Function in C++ Associative Containers In C++ C++ generic programming introduction Character Set in C++ Class and Structure in C++ Decltype in c++ Difference Between Abstraction and Interface in C++ File Stream in C++ Final in C++ Final Keyword in C++ Find substring in C++ Flush in C++ Has-A Relationship in C++ How to allocate memory dynamically in C++ How to close turbo C++ in windows 10 How to Use Modulus in C++ How to use Set in C++ Input and Output Operators in C++ Insert Function in C++ MENU DRIVEN PROGRAM IN C++ MOVE SEMANTICS IN C++ OOPs Interview Questions in C++ PARAMETER PASSING IN C++ PUNCTUATORS IN C++ SPLIT FUNCTION IN C++ Stream Classes in C++ Vector declaration in c++ Virtual Function in C++ Babylonian Square Root Algorithm in C++ C++ Delegates Complex Number Program in C++ Custom Sort in C++ Differences Between C++ and JavaScript Meta Classes in C++ Prim’s Algorithm in C++ RAII in C++ How to access set elements in C++ How to Allocate and Deallocate Memory in C++ How to Convert String to Lowercase in c++ How to initialize a string in C++ How to Input a String in C++ Ignore Function in C++ Image Recognition Algorithm in C++ Insertion Sort Algorithm in C++ Knapsack Problem in C++ LOG BASE 2 IN C++ LOOPING STATEMENT IN C++ Managing Output with Manipulators in C++ Max Heap in C++ mbrlen- function in C-C++ Merge Overlapping Intervals in C++ Merge Sort Recursive in C++ Methods to Sort Strings in C++ Multiline Comment in C++ Multiple catch statements in C++ Naïve Bayes Algorithm in C++ Needleman Wunsch Algorithm in C++ Object delegation in C++ Pass 2 Assembler Program in C++ ratio_less_equal() function in C++ Rethrowing an exception in C++ Return type in C++ Reusability in C++ Round Robin Scheduling Program in C++ Sequence Container in C++ Sieve of Eratosthenes in C++ SOLID PRINCIPLES IN C++ STACK USING PUSH POP PROGRAMME IN C++ Stdlib Header File in C++ Strcmp function in C++ strcmpi in C++ Find minimum s-t cut in a flow network in C++ Hamilton Cycle Detection in C++ list cbеgin() and cеnd() function in C++ Maximum Bipartite Matching in C++ Neural Network in C++ Otsu Thresholding Opencv C++ Pancake Sorting in C++ Pimpl Idiom in C++ Print All Interleavings of Given Two Strings in C++ Print the Corner Elements and their Sum in a 2-D Matrix in C++ reinterpret_cast in C++ Rotate Bits of a Number in C++ Shallow Copy in C++ Stable Marriage Program in C++ Stack Smashing Detected in C++ Static Data Member in C++ String::npos in C++ Thread safe queue in C++ Total Keywords in C++ Tug of War in C++ What Kind of Exceptions are Available in C++ Which Operator is Used to Allocate Memory for an Object Boundary Traversal of Binary Number in C++ Difference between POP and OOP in C++ Fundamentals of Data Structures in C++ C++ Constructor Return Type C++ Libraries C++ STL Tutorial C++ Throw Character String in C++ Clone a Linked List with Next and Random Pointer in C++ Counting Sort in C++ Diffеrеncе Bеtwееn dеquе::cbеgin and dеquе::assign in C++ Difference between Null and Nullptr in C++ Facade Pattern in C++ Semaphore in C++ Accumulate function in C++ Algorithm Header File in C++ Applications of C++ basic_istream::putback() in C++ Benefits of OOPs Boost library in C++ Bubble Sort in C++ C++ Override C++ Struct Public Throw Exception in C++ Call by Rеfеrеncе in C++ Character in C++ Characteristics of friend function in C++ Cin Getline in C++ Collections in C++ Composition in c++ Continue Statement in C++ Developing a Digital Synthesizer in C++ Different C++ Versions Diffеrеncе Bеtwееn Friеnd Function and Virtual Function in C++ Find a triplet from three linked lists with a sum equal to a given number in C++ Fizz Buzz Problem in C++ Forward list in C++ Friend Function and Friend Class in C++ Advantages of Function Overloading in C++ Game Library for C++ HashSet in C++ Heapify Algorithm in C++ Hopcroft Karp algorithm in C++ String find function in C++ Tellg in C++ The lower_bound in C++ The sum of digits in C++ Thinking in C++ language THIS FUNCTION IN C++ Tower of Hanoi Algorithm in C++ Transpose of a Matrix in C++ language Types of Execution in C++ Use of explicit keyword in C++ User-defined header files in C++ Vector of String in C++ Virtual Table in C++ Visibility Mode in C++ What are Literals in C++ What are manipulators in C++ Abstract Data Type in C++ POP full form in C++ 8-puzzle Problem Using Branch and Bound in C++ BK tree in C++ Decorator pattern in C++ Fusion tree in C++ Jump Pointer algorithm in C++ std::remove_extent in C++ Tabu search in C++ Nested structure in C++

C++ Constructor Return Type

Introduction of Constructor

A constructor in C++ is a unique member function inside a class responsible for setting up the properties or data members of objects produced from that class. When you create a class object, the constructors are automatically called to ensure the object is appropriately set up and in a helpful beginning state. They are an essential component of C++'s object-oriented programming and are vital in enclosing a class's behaviour and data.

Constructors have the same name as the class they belong to and no return type, not even void. You may build objects with various initialisations depending on your needs by using overloaded constructors, which let a class have numerous constructors with unique argument lists. Constructors contribute to the dependable and maintainable nature of C++ programs by ensuring that objects are created with the appropriate initialisation.

Purpose of Constructor in C++

Constructors are a key component of object-oriented programming in C++ and serve several important purposes. Here are the primary goals and duties of constructors in C++, thoroughly explained:

  • Object Initialisation: The main purpose of the constructor is to create an object, and the constructor initialises the object properties or data members. The created object should be valid in the form of consistency and state. The data elements of the object that is designed and are appropriately initialised by the constructor will always focus and ensure that it does not contain any garbage value or the undefinable state.
  • Encapsulation: In encapsulation, the constructor plays a significant role, which is part and parcel of object-oriented programming. The attributes and functions that operate in the data are combined into a single unit or class by using encapsulation. By hiding the specifics of how an object is configured from the outside world via constructors, you may encapsulate the initialisation code within the class. By separating the implementation details, this encapsulation supports the development of clean, modular, and maintainable code.
  • Customization and Overloading: C++ enables the creation of numerous constructors for a class, each with an individual set of parameters. Using this functionality, you may adjust how objects get started based on various situations. You may, for instance, have a parameterised constructor that accepts particular values to initialise an object and a default constructor that takes no inputs. Constructor overloading enables flexibility for many use cases and guarantees that objects may be constructed with the proper starting state.
  • Memory Allocation and Resource Management: Constructors can be used for memory allocation and resource management in addition to initialising data members. For instance, constructors can allocate memory, set up pointers, and carry out any necessary resource allocation activities in classes that deal with dynamic memory (such as allocating memory for arrays or linked lists). To prevent memory leaks and resource-related problems, constructors are in charge of obtaining and initialising resources.
  • Inheritance and Base Class Initialisation: Constructors are also crucial in inheritance, as derived classes inherit characteristics and behaviour from base classes. It is frequently necessary for constructors in derived classes to call constructors in their base classes to guarantee that the inherited attributes are correctly initialised. This ensures initialisation flows smoothly from the base class to the derived class.
  • Object Copying: Copy constructors are a constructor that is used when objects are copied. They provide you with the ability to manage how object copying is carried out. You may choose whether a deep or shallow duplicate of an object is created according to your needs by providing a custom copy constructor.

Types of Constructors in C++

The constructor is defined in 3 types, such as:

  1. Default constructor
  2. Parameterised Constructor
  3. Copy Constructor

1. Default constructor

In C++, a default constructor is a type of constructor that accepts no parameters and calls itself automatically when a class object is created without any particular initialisation variables. Providing default values for the object's data members primarily guarantees that objects are initialised and genuine. When you wish to build objects without giving any starting values and instead depend on logical default settings, default constructors are very helpful.

Designing classes and objects in C++ requires carefully defining constructors. When an object is formed, the attributes or data members are initialised by specific member functions known as constructors. The constructor cannot have any return types, not even void, and its name must correspond to the class name. To prevent uninitialised or garbage values in attributes, constructors are crucial in guaranteeing that objects are in a correct state from the time they are created.

There are several different kinds of constructors, including copy constructors (for constructing things by copying data from existing objects), parameterised constructors (with variables to customise initialisation), and default constructors (with no parameters). Additionally, constructors may be overloaded to handle various initialisation possibilities.

By hiding the internals of object setup from other code, proper initialisation within constructors supports encapsulation, a key idea in object-oriented programming. Constructors should be carefully documented and utilised to design strong and stable C++ classes, paying attention to resource management and exception handling as appropriate.

Example code on default constructor:

#include<iostream>

using namespace std;

class Rectangle {

Public:

    int length; 

// Length of the rectangle

    int width;  

// Width of the rectangle

    // Default Constructor

    Rectangle() {

        length = 5; // Default length

        width = 3; // Default width

    }

};

int main() {

    // Default constructor called when an object is created

    Rectangle r;

    // Display the dimensions of the rectangle

    cout << "Rectangle dimensions: " << r.length << "x" << r.width << " units" << endl;

    return 0;

}

Output:

C++ Constructor Return Type

Explanation:

This C++ code illustrates the development of a simple Rectangle class and its use in the main function. The length and width properties, which specify a geometric rectangle's dimensions, are represented by the Rectangle class.

The class specification includes a default constructor. The length attribute and width attribute are set to 5 units and 3 units, respectively, by this default constructor. When a Rectangle class object is created without any initialisation settings specified, this empty constructor is automatically invoked. A Rectangle class object called r is generated in the main method.

The default constructor is used when creating objects because no exact dimensions are specified. As a result, r is started with a length and breadth of 5 and 3 units, respectively. The cout command is then used by the code to show the rectangle's dimensions to the console. It confirms that the default constructor properly initialised the r object with the default settings by printing "Rectangle dimensions: 5x3 units" in the output.

2. Parameterised Constructor:

In C++, a parameterised constructor is a type of constructor that accepts one or more arguments or parameters when creating an object to modify how it is initialised. Unlike default constructors, which offer predefined beginning values for an object's attributes, parameterised constructors let you build objects with customised initial values. When you wish to initialise objects differently based on multiple conditions, parameterised constructors are crucial.

Parameterised constructors' key features and considerations:

  • Custom Initialisation: You may customise the initial state of an object by using parameterised constructors, which let you give parameters when constructing new objects. The data elements of the object are initialised using these parameters in the constructor.
  • Overloading: A class may declare several parameterised constructors, each with a unique set of inputs. Overloading of constructors is what this is called. By selecting the right constructor depending on the supplied inputs, you may build objects with different initialisation choices.
  • Initialisation List: In a parameterised constructor, the values of the data members are typically set using an initialisation list. When working with complicated or class-type characteristics, initialisation lists are effective and recommended for setting up member variables.

Program on the parameterised constructor:

#include<iostream>

#include<string>

class Employee {

Public:

    //Parameterised Constructor

    Employee(std::string empName, int empAge) : name(empName), age(empAge) {

        // Additional initialisation code can be placed here if needed

    }

    //method to display employee's information

    void displayInfo() {

        std::cout << "Employee Name: " << name << ", Employee Age: " << age << " years" << std::endl;

    }

Private:

    std::string name;

    int age;

};

int main() {

    // Creating employee objects using the parameterised Constructor

    Employee employee1("John Doe", 30);

    Employee employee2("Jane Smith", 25);

    // Displaying information about the created employees

    std::cout << "Employee 1: ";

    employee1.displayInfo();

    std::cout << "Employee 2: ";

    employee2.displayInfo();

    return 0;

}

Output:

C++ Constructor Return Type

Explanation:

The above C++ code establishes the Employee class and uses it in the main function. The name property is a string, and age is an integer, and together, they make up the Employee class, which is used to represent employees.

An empName (employee name) and empAge (employee age) parameterised constructor is included in the class, allowing you to build Employee objects with precise values for these two variables. These parameters are used in the constructor to set the name and age of the private data members. Encapsulating data by making characteristics private and granting controlled access through public methods like displayInfo is an intelligent practice. The parameterised constructor is used in the main process to generate the two Employee objects, employee1 and employee2. Each object is initialised with unique employee data, such as the employee's name and age. To display each item's specific characteristics, the displayInfo method is invoked on each object.

The programme output contains details about the two employees, including their names and ages. In this code, the idea of encapsulation is shown, with the class enclosing the employee data and offering a simple interface for accessing and displaying that data. It also highlights using parameterised constructors, a fundamental idea in C++ class design and object-oriented programming, to initialise objects with particular values.

3. Copy Constructor in C++:

Copy Constructor in C++ is a special type of function. When creating a new object, the copy constructor is used to copy the values of existing objects of the same type. It is the copying of the same type of existing object and initialising to the new object. Copy constructors are very helpful for ensuring that objects are copied accurately and that any resources assigned dynamically are managed appropriately.

  • Purpose: A copy constructor's principal job is to create a copy of an existing object. It assures that the produced object is a deep or shallow identical depending on the design and requirements of the class.
  • Default Copy Constructor: The compiler creates a default copy constructor if you don't expressly declare one in your class. This copy constructor, by default, only makes a shallow copy, which only duplicates the values of data members. This might cause issues for classes that include pointers or dynamically allocated resources if it needs to be handled appropriately.
  • Deep Copy vs Shallow Copy: You can provide your copy constructor to make a deep copy of the object if you like. The copy constructor will match the object's data and allocate extra memory as necessary. This is essential if your class uses pointers, arrays, or other dynamic resources.
  • Use Cases: When providing objects as values, returning objects as values from functions, or initialising one object with the values of another, copy constructors are employed.

Example code:

#include<iostream>

class Employee {

Public:

std::string empName; // Employee's name 

int empAge; // Employee's age

//Parameterised constructor 

Employee(std: :string name, int age) : empName(name), empAge(age) {}

// Copy constructor

Employee(const Employee &source) : empName(source.empName), empAge(source.empAge) {}

//method to display employee's information

void displayInfo() { 

std: :cout << "Employee Name: " << empName << ", Employee Age: " << empAge << " years" << std: :endl;

    }

};

int main(){

// Creating two Employee objects and demonstrating the copy constructor

Employee employee1("John Smith", 35); // Creating the first employee

Employee employee2 = employee1;       

// Using the copy constructor to create the second employee

// Displaying information about the employees

    std: :cout << "Employee 1 Info:" << std: :endl;

employee1.displayInfo();

std: :cout << "Employee 2 Info (Copy of Employee 1):" << std: :endl;

employee2.displayInfo();

return 0;

}

Output:

C++ Constructor Return Type

Explanation:

This C++ code defines the Employee class and demonstrates its use within the main function. With two attributes—empName for the employee's name and empAge for their age—the Employee class serves as a model for employee data.

A parameterised constructor within the class that accepts the two parameters, name and age, enables you to initialise Employee instances with particular employee data. A special copy constructor is also available, guaranteeing a precise copy of an existing Employee object when building a new one. The empName and empAge properties are successfully transferred from the source object to the new object thanks to this copy constructor.

Two Employee objects, employee1 and employee2, are created in the main function. Employee2 is initialised as a clone of Employee1 by using the copy constructor, whereas Employee1 is initialised with the name "John Smith" and aged 35. Then, for each object, the displayInfo method is used to show the appropriate employee information.

The program's output displays data for both workers, showing that the copy constructor successfully turned the employee2 into a duplicate of the employee1. Especially when working with user-defined classes like employees, this code sample illustrates the critical function of copy constructors in guaranteeing exact object copying and proper handling of class characteristics.

Constructor with Default Arguments

In C++, a constructor type called default arguments enables you to provide default values for one or more of its parameters. By allowing you to call the constructor without any arguments, the feature makes it easier to create objects because the default values are always utilised.

The main benefit of constructors with default arguments is that they provide the user of the class the opportunity to make some constructor parameters optional. This eliminates the requirement for several overloaded constructors and simplifies the interface of the constructor. The constructor declaration specifies default argument values, which must be compile-time considered constants or expressions.

When you have a class with characteristics that may have appropriate default values or when you wish to provide flexibility in how objects are initialised, these constructors are very helpful. When considering whether to utilise default parameters, it's crucial to exercise precaution and take your code's readability and maintainability into account.

Dynamic Initialisation Using a Constructor

In C++, the method of allocating memory and initialising objects during runtime instead of compile-time is known as dynamic initialisation using constructors. When you need to generate objects whose size or attributes can only be established once the program is running, this is especially helpful. It enables you to use tools like new or malloc to allocate memory on the heap before employing a constructor to initialise the object inside that memory.

When working with user-defined kinds of objects, dynamic initialisation is frequently used, especially when the size or properties of the object are decided during programme execution. When working with objects of different sizes, such as those in polymorphic hierarchies, or when designing data structures like linked lists and trees, this method can be crucial since it allows the construction of objects with various features.

When utilising dynamic initialisation, you use new or similar techniques to create a memory for the object on the heap. Then, you call the proper constructor to initialise the object inside that memory. To avoid memory leaks, which happen when memory is not deallocated when it is no longer required, adequate management of dynamically allocated memory is essential. In C++, when the memory that was created using new is no longer needed, it should be released using the delete command.

Does the Constructor have Any Return Type in C++?

Constructors are unique member functions of a class in C++ that initialise objects at creation time. Constructors don't have a return type, not even void, unlike conventional functions. This method separates constructors from other member functions and requires that the constructor name correctly correspond to the class name.

The constructors' inability to provide a return value emphasises their importance in object initialisation rather than their ability to do so. This is a basic rule of the language. The constructor is automatically called when an object is formed to initialise the object's state and attributes to legitimate and valid values.

The constructor's body is where initialisation activities, including setting starting values, allocating memory, and other required setup duties, are completed. The constructor typically handles any initialisation process issue via an error-handling mechanism or by throwing an exception.