In the inheritance concept contains type of inheritance and each inheritance are explained . and pointer also contains the concept it can be easy to understand for the freshers of c++. virtual function also contains the concepts it can be very useful for student . polymorphisms also contains this concept above the declared concepts are very useful for learners for c++
3. INHERITANCE
• THE CAPACITY OF A CLASS TO ASSUME PROPERTIES AND CHARACTERISTICS
FROM ANOTHER CLASS IS CALLED INHERITANCE. INHERITANCE IS ONE OF
THE MOST IMPORTANT ELEMENT OF OBJECT ORIENTED PROGRAMMING.
SUB CLASS: THE CLASS THAT INHERITS ESTATES FROM ANOTHER CLASS IS
CALLED SUB CLASS OR DERIVED CLASS.
SUPER CLASS: THE CLASS WHOSE ESTATES ARE INHERITED BY SUB CLASS IS
CALLED BASE CLASS OR SUPER CLASS.
4. MODES OF INHERITANCE
MODES OF INHERITANCE
• PUBLIC MODE: IF WE ASSUME A SUB CLASS FROM A PUBLIC BASE CLASS.
THEN THE PUBLIC MEMBER OF THE BASE CLASS WILL BECOME PUBLIC IN
THE DERIVED CLASS AND COVERED MEMBERS OF THE BASE CLASS WILL
BECOME COVERED IN DERIVED CLASS.
• PROTECTED MODE: IF WE ASSUME A SUB CLASS FROM A COVERED BASE
CLASS. THEN BOTH PUBLIC MEMBER AND COVERED MEMBERS OF THE BASE
CLASS WILL BECOME COVERED IN DERIVED CLASS.
• PRIVATE MODE: IF WE ASSUME A SUB CLASS FROM A PRIVATE BASE CLASS.
THEN BOTH PUBLIC MEMBER AND COVERED MEMBERS OF THE BASE CLASS
WILL BECOME PRIVATE IN DERIVED CLASS.
5. TYPES OF INHERITANCE
• SINGLE INHERITANCE: IN SINGLE INHERITANCE, A CLASS IS GRANT TO
INHERIT FROM ONLY ONE CLASS. I.E. ONE SUB CLASS IS ROOTED BY ONE
BASE CLASS ONLY.
SYNTAX: CLASS SUBCLASS_NAME : ACCESS_MODE BASE_CLASS { //BODY OF
SUBCLASS };
6. • MULTIPLE INHERITANCE: MULTIPLE INHERITANCE IS A CHARACTER OF C++
WHERE A CLASS CAN INHERIT FROM MORE THAN ONE CLASSES. I.E
ONE SUB CLASS IS ROOTED FROM MORE THAN ONE BASE CLASSES.
SYNTAX: CLASS SUBCLASS_NAME : ACCESS_MODE BASE_CLASS1,
ACCESS_MODE BASE_CLASS2, .... { //BODY OF SUBCLASS };
7. • MULTILEVEL INHERITANCE: IN THIS TYPE OF INHERITANCE, A DERIVED
CLASS IS CONSTRUCT FROM ANOTHER DERIVED CLASS.
• HIERARCHICAL INHERITANCE: IN THIS TYPE OF INHERITANCE, MORE THAN
ONE SUB CLASS IS ROOTED FROM A SINGLE BASE CLASS. I.E. MORE THAN ONE
DERIVED CLASS IS CONSTRUCT FROM A SINGLE BASE CLASS.
8. • HYBRID (VIRTUAL) INHERITANCE: HYBRID INHERITANCE IS
ACHEIVED BY CONNECTING MORE THAN ONE TYPE OF
INHERITANCE. FOR EXAMPLE: CONNECTING HIERARCHICAL
INHERITANCE AND MULTIPLE INHERITANCE.
9. EXAMPLE OF INHERITANCE:
#INCLUDE <IOSTREAM.H>
USING NAMESPACE STD;
//BASE CLASS
CLASS PARENT
{
PUBLIC:
INT ID_P;
};
// SUB CLASS INHERITING FROM BASE CLASS(PARENT)
CLASS CHILD : PUBLIC PARENT
{
PUBLIC:
INT ID_C;
};
10. //MAIN FUNCTION
INT MAIN()
{
CHILD OBJ1;
// AN OBJECT OF CLASS CHILD HAS ALL DATA MEMBERS
// AND MEMBER FUNCTIONS OF CLASS PARENT
OBJ1.ID_C = 7;
OBJ1.ID_P = 91;
COUT << "CHILD ID IS " << OBJ1.ID_C << ENDL;
COUT << "PARENT ID IS " << OBJ1.ID_P << ENDL;
RETURN 0;
}
11. POINTER
POINTER:
A POINTER IS A VARIABLE THAT DOMINANCE A MEMORY ADDRESS WHERE A VALUE ACTIVITY.
A POINTER IS ANNOUNCED USING THE * OPERATOR BEFORE AN ACCESSORY.
AS C++ IS A STATICALLY TYPED LANGUAGE, THE TYPE IS REQUIRED TO ASSERTS A POINTER.
EXAMPLE OF POINTER:
#INCLUDE <IOSTREAM>
USING NAMESPACE STD;
INT MAIN ()
{ I
INT VAR = 20; // ACTUAL VARIABLE DECLARATION.
INT *IP; // POINTER VARIABLE
IP = &VAR; // STORE ADDRESS OF VAR IN POINTER VARIABLE
COUT << "VALUE OF VAR VARIABLE: ";
COUT << VAR << ENDL;
// PRINT THE ADDRESS STORED IN IP POINTER VARIABLE COUT << "ADDRESS STORED IN IP
12. VARIABLE: ";
COUT << IP << ENDL;
// ACCESS THE VALUE AT THE ADDRESS AVAILABLE IN POINTER
COUT << "VALUE OF *IP VARIABLE: ";
COUT << *IP << ENDL;
RETURN 0;
}
OUTPUT:
VALUE OF VAR VARIABLE: 20
ADDRESS STORED IN IP VARIABLE: 0XBFC601AC
VALUE OF *IP VARIABLE: 20
13. VIRTUAL FUNCTIONS
VIRTUAL FUNCTION:
A VIRTUAL FUNCTION A MEMBER FUNCTION WHICH IS STATED WITHIN BASE CLASS AND IS RE-DEFINED BY
DERIVED CLASS. WHEN YOU ASSIGN TO A DERIVED CLASS OBJECT USING A POINTER OR A HINT TO THE BASE
CLASS, YOU CAN CALLA VIRTUAL FUNCTION FOR THAT OBJECT AND HANG THE DERIVED CLASS'S VERSION OF
THE FUNCTION.
EXAMPLE OF VIRTUAL FUNCTION:
#INCLUDE<IOSTREAM>
USING NAMESPACE STD;
CLASS BASE
{
PUBLIC:
VIRTUAL VOID PRINT ()
{ COUT<< "PRINT BASE CLASS" <<ENDL; }
VOID SHOW ()
{ COUT<< "SHOW BASE CLASS" <<ENDL; }
};
14. CLASS DERIVED:PUBLIC BASE
{
PUBLIC:
VOID PRINT ()
{ COUT<< "PRINT DERIVED CLASS" <<ENDL; }
VOID SHOW ()
{ COUT<< "SHOW DERIVED CLASS" <<ENDL; }
};
INT MAIN()
{
BASE *BPTR;
DERIVED D;
BPTR = &D;
//VIRTUAL FUNCTION, BINDED AT RUNTIME
BPTR->PRINT();
// NON-VIRTUAL FUNCTION, BINDED AT COMPILE TIME
BPTR->SHOW();
}
OUTPUT:
PRINT DERIVED CLASS
SHOW BASE CLASS
15. POLYMORPHISM
• POLYMORPHISM MEASURE THAT A CALL TO A MEMBER FUNCTION WILL CAUSE A
DIFFERENT FUNCTION TO BE ASSASSINATE DEPENDING ON THE TYPE OF OBJECT
THAT CONJURE THE FUNCTION. POLYMORPHISM OCCURS WHEN THERE IS A
HIERARCHY OF CLASSES AND THEY ARE LINKED BY INHERITANCE.