SlideShare a Scribd company logo
Inheritance
The mechanism by which one class can
inherit the properties of another.
It allows a hierarchy of classes to be built,
moving from the most general to the most
specific.
Base Class, Derived Class
Base Class
Defines all qualities common to any derived
classes.
Derived Class
Inherits those general properties and adds
new properties that are specific to that class.
Example: Base Class
class base {
int x;
public:
void setx(int n) { x = n; }
void showx() { cout << x << ‘n’ }
};
Example: Derived Class
// Inherit as public
class derived : public base {
int y;
public:
void sety(int n) { y = n; }
void showy() { cout << y << ‘n’;}
};
Access Specifier: public
The keyword public tells the compiler that
base will be inherited such that:
all public members of the base class will
also be public members of derived.
However, all private elements of base will
remain private to it and are not directly
accessible by derived.
Example: main()
int main() {
derived ob;
ob.setx(10);
ob.sety(20);
ob.showx();
ob.showy();
}
An incorrect example
class derived : public base {
int y;
public:
void sety(int n) { y = n; }
/* Error ! Cannot access x, which is
private member of base. */
void show_sum() {cout << x+y; }
};
Access Specifier: private
If the access specifier is private:
public members of base become private
members of derived.
these members are still accessible by
member functions of derived.
Example: Derived Class
// Inherit as private
class derived : private base {
int y;
public:
void sety(int n) { y = n; }
void showy() { cout << y << ‘n’;}
};
Example: main()
int main() {
derived ob;
ob.setx(10); // Error! setx() is private.
ob.sety(20); // OK!
ob.showx(); // Error! showx() is private.
ob.showy(); // OK!
}
Example: Derived Class
class derived : private base {
int y;
public:
// setx is accessible from within derived
void setxy(int n, int m) { setx(n); y = m; }
// showx is also accessible
void showxy() { showx(); cout<<y<< ‘n’;}
};
Protected Members
Sometimes you want to do the following:
keep a member of a base class private
allow a derived class access to it
Use protected members!
If no derived class, protected
members is the same as private
members.
Protected Members
The full general form of a class
declaration:
class class-name {
// private members
protected:
// protected members
public:
// public members
};
3 Types of Access Specifiers
Type 1: inherit as private
Base Derived
private members inaccessible
protected members private members
public members private members
3 Types of Access Specifiers
Type 2: inherit as protected
Base Derived
private members inaccessible
protected members protected members
public members protected members
3 Types of Access Specifiers
Type 3: inherit as public
Base Derived
private members inaccessible
protected members protected members
public members public members
Constructor and Destructor
It is possible for both the base class and
the derived class to have constructor
and/or destructor functions.
The constructor functions are executed in
order of derivation.
i.e.the base class constructor is executed
first.
The destructor functions are executed in
reverse order.
Passing arguments
What if the constructor functions of both
the base class and derived class take
arguments?
1. Pass all necessary arguments to the
derived class’s constructor.
2. Then pass the appropriate arguments
along to the base class.
Example: Constructor of base
class base {
int i;
public:
base(int n) {
cout << “constructing base n”;
i = n; }
~base() { cout << “destructing base n”; }
};
Example: Constructor of derived
class derived : public base {
int j;
public:
derived (int n, int m) : base (m) {
cout << “constructing derivedn”;
j = n; }
~derived() { cout << “destructing derivedn”;}
};
Example: main()
int main() {
derived o(10,20);
return 0;
}
constructing base
constructing derived
destructing derived
destructing base
Multiple Inheritance
Type 1:
base 1
derived 1
derived 2
Multiple Inheritance
• Type 2:
base 1 base 2
derived
Example: Type 2
// Create first base class
class B1 {
int a;
public:
B1(int x) { a = x; }
int geta() { return a; }
};
Example: Type 2
// Create second base class
class B2 {
int b;
public:
B2(int x) { b = x; }
int getb() { return b; }
};
// Directly inherit two base classes.
class D : public B1, public B2 {
int c;
public:
D(int x, int y, int z) : B1(z), B2(y) {
c = x; }
void show() {
cout << geta() << getb() << c;}
} ;
Example: Type 2
Potential Problem
Base is inherited twice by Derived 3!
Base Base
Derived 1 Derived 2
Derived 3
Virtual Base Class
To resolve this problem, virtual base class
can be used.
class base {
public:
int i;
};
Virtual Base Class
// Inherit base as virtual
class D1 : virtual public base {
public:
int j;
};
class D2 : virtual public base {
public:
int k;
};
Virtual Base Class
/* Here, D3 inherits both D1 and D2.
However, only one copy of base is
present */
class D3 : public D1, public D2 {
public:
int product () { return i * j * k; }
};
Pointers to Derived Classes
A pointer declared as a pointer to base
class can also be used to point to any
class derived from that base.
However, only those members of the
derived object that were inherited from the
base can be accessed.
Example
base *p; // base class pointer
base B_obj;
derived D_obj;
p = &B_obj; // p can point to base object
p = &D_obj; // p can also point to derived
// object
Virtual Function
A virtual function is a member function
declared within a base class
redefined by a derived class (i.e. overriding)
It can be used to support run-time
polymorphism.
Example
class base {
public:
int i;
base (int x) { i = x; }
virtual void func() {cout << i; }
};
Example
class derived : public base {
public:
derived (int x) : base (x) {}
// The keyword virtual is not needed.
void func() {cout << i * i; }
};
Example
int main() {
base ob(10), *p;
derived d_ob(10);
p = &ob;
p->func(); // use base’s func()
p = &d_ob;
p->func(); // use derived’s func()
}
Pure Virtual Functions
A pure virtual function has no definition
relative to the base class.
Only the function’s prototype is included.
General form:
virtual type func-name(paremeter-list) = 0
Example: area
class area {
public:
double dim1, dim2;
area(double x, double y)
{dim1 = x; dim2 = y;}
// pure virtual function
virtual double getarea() = 0;
};
Example: rectangle
class rectangle : public area {
public:
// function overriding
double getarea() {
return dim1 * dim2;
}
};
Example: triangle
class triangle : public area {
public:
// function overriding
double getarea() {
return 0.5 * dim1 * dim2;
}
};

More Related Content

PPTX
Virtual base class
PPT
Inheritance
PPTX
OOPS Basics With Example
PPTX
Multiple Inheritance
PDF
C++ Multiple Inheritance
PPT
implementing of properties
PDF
Symfony War Stories
PDF
Unittests fĂźr Dummies
Virtual base class
Inheritance
OOPS Basics With Example
Multiple Inheritance
C++ Multiple Inheritance
implementing of properties
Symfony War Stories
Unittests fĂźr Dummies

What's hot (20)

PPT
Inheritance, polymorphisam, abstract classes and composition)
PDF
Dependency Injection
PPTX
Constructors & destructors
PDF
Javascript foundations: variables and types
PDF
Symfony components in the wild, PHPNW12
PDF
Doctrine fixtures
PPTX
Inheritance
PDF
Design of OO language
PDF
Php Enums
PPTX
Inheritance
PPTX
Inheritance
PPT
Constructor
PPTX
constructors and destructors
PDF
Java ppt Gandhi Ravi (gandhiri@gmail.com)
PPSX
Constructor and destructor
PPT
inhertance c++
PPTX
Virtual function in C++ Pure Virtual Function
PPT
C++: Constructor, Copy Constructor and Assignment operator
PDF
Descriptor Protocol
PPTX
Inheritance, polymorphisam, abstract classes and composition)
Dependency Injection
Constructors & destructors
Javascript foundations: variables and types
Symfony components in the wild, PHPNW12
Doctrine fixtures
Inheritance
Design of OO language
Php Enums
Inheritance
Inheritance
Constructor
constructors and destructors
Java ppt Gandhi Ravi (gandhiri@gmail.com)
Constructor and destructor
inhertance c++
Virtual function in C++ Pure Virtual Function
C++: Constructor, Copy Constructor and Assignment operator
Descriptor Protocol
Ad

Similar to Lab3 (20)

PDF
lecture-2021inheritance-160705095417.pdf
PPTX
[OOP - Lec 20,21] Inheritance
PPT
Inheritance in C++
PPT
Inheritance
PPTX
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
PPTX
Lecture 6, c++(complete reference,herbet sheidt)chapter-16
PPT
Lecturespecial
PPT
PPT
inheritance
PPTX
INHERITANCE, POINTERS, VIRTUAL FUNCTIONS, POLYMORPHISM.pptx
PPTX
INHERITANCE.pptx
PPT
MODULE2_INHERITANCE_SESSION1.ppt computer
PDF
Inheritance
PDF
Chapter 6 and inheritance OOP C++ tu ioe
 
PPT
Inheritance : Extending Classes
PPTX
OOP unit II inheritance.pptx object oriented programming
PPTX
Inheritance
PPT
Inheritance
PPTX
inheritance_OOPC_datastream.ppttttttttttttttx
lecture-2021inheritance-160705095417.pdf
[OOP - Lec 20,21] Inheritance
Inheritance in C++
Inheritance
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
Lecture 6, c++(complete reference,herbet sheidt)chapter-16
Lecturespecial
inheritance
INHERITANCE, POINTERS, VIRTUAL FUNCTIONS, POLYMORPHISM.pptx
INHERITANCE.pptx
MODULE2_INHERITANCE_SESSION1.ppt computer
Inheritance
Chapter 6 and inheritance OOP C++ tu ioe
 
Inheritance : Extending Classes
OOP unit II inheritance.pptx object oriented programming
Inheritance
Inheritance
inheritance_OOPC_datastream.ppttttttttttttttx
Ad

More from karan saini (20)

PPT
Topology ppt
PPT
Tibor
PPTX
Thestoryofmylife 140221061604-phpapp01
PPTX
Thestoryofmylife 140221061604-phpapp01 (1)
PPT
Snrg2011 6.15.2.sta canney_suranofsky
PPTX
Science
PPT
Risc and cisc eugene clewlow
PPT
Py4inf 05-iterations
PPT
Py4inf 05-iterations (1)
PPT
Periodic table1
PPTX
Maths project
PPT
Lecture 5
PPT
Lcd monitors
PPT
L11cs2110sp13
PPT
Helen keller-1226880485154369-8
PPT
Hardware
PPT
Gsm cdma1
PPTX
Final 121114041321-phpapp01
PPTX
Engh 140118084844-phpapp01
PPT
Computer networks--network
Topology ppt
Tibor
Thestoryofmylife 140221061604-phpapp01
Thestoryofmylife 140221061604-phpapp01 (1)
Snrg2011 6.15.2.sta canney_suranofsky
Science
Risc and cisc eugene clewlow
Py4inf 05-iterations
Py4inf 05-iterations (1)
Periodic table1
Maths project
Lecture 5
Lcd monitors
L11cs2110sp13
Helen keller-1226880485154369-8
Hardware
Gsm cdma1
Final 121114041321-phpapp01
Engh 140118084844-phpapp01
Computer networks--network

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Encapsulation theory and applications.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
 
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
 
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Modernizing your data center with Dell and AMD
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
20250228 LYD VKU AI Blended-Learning.pptx
Chapter 3 Spatial Domain Image Processing.pdf
Big Data Technologies - Introduction.pptx
Spectral efficient network and resource selection model in 5G networks
Encapsulation theory and applications.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
 
NewMind AI Monthly Chronicles - July 2025
Encapsulation_ Review paper, used for researhc scholars
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The AUB Centre for AI in Media Proposal.docx
 
Dropbox Q2 2025 Financial Results & Investor Presentation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Understanding_Digital_Forensics_Presentation.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Modernizing your data center with Dell and AMD
How UI/UX Design Impacts User Retention in Mobile Apps.pdf

Lab3

  • 1. Inheritance The mechanism by which one class can inherit the properties of another. It allows a hierarchy of classes to be built, moving from the most general to the most specific.
  • 2. Base Class, Derived Class Base Class Defines all qualities common to any derived classes. Derived Class Inherits those general properties and adds new properties that are specific to that class.
  • 3. Example: Base Class class base { int x; public: void setx(int n) { x = n; } void showx() { cout << x << ‘n’ } };
  • 4. Example: Derived Class // Inherit as public class derived : public base { int y; public: void sety(int n) { y = n; } void showy() { cout << y << ‘n’;} };
  • 5. Access Specifier: public The keyword public tells the compiler that base will be inherited such that: all public members of the base class will also be public members of derived. However, all private elements of base will remain private to it and are not directly accessible by derived.
  • 6. Example: main() int main() { derived ob; ob.setx(10); ob.sety(20); ob.showx(); ob.showy(); }
  • 7. An incorrect example class derived : public base { int y; public: void sety(int n) { y = n; } /* Error ! Cannot access x, which is private member of base. */ void show_sum() {cout << x+y; } };
  • 8. Access Specifier: private If the access specifier is private: public members of base become private members of derived. these members are still accessible by member functions of derived.
  • 9. Example: Derived Class // Inherit as private class derived : private base { int y; public: void sety(int n) { y = n; } void showy() { cout << y << ‘n’;} };
  • 10. Example: main() int main() { derived ob; ob.setx(10); // Error! setx() is private. ob.sety(20); // OK! ob.showx(); // Error! showx() is private. ob.showy(); // OK! }
  • 11. Example: Derived Class class derived : private base { int y; public: // setx is accessible from within derived void setxy(int n, int m) { setx(n); y = m; } // showx is also accessible void showxy() { showx(); cout<<y<< ‘n’;} };
  • 12. Protected Members Sometimes you want to do the following: keep a member of a base class private allow a derived class access to it Use protected members! If no derived class, protected members is the same as private members.
  • 13. Protected Members The full general form of a class declaration: class class-name { // private members protected: // protected members public: // public members };
  • 14. 3 Types of Access Specifiers Type 1: inherit as private Base Derived private members inaccessible protected members private members public members private members
  • 15. 3 Types of Access Specifiers Type 2: inherit as protected Base Derived private members inaccessible protected members protected members public members protected members
  • 16. 3 Types of Access Specifiers Type 3: inherit as public Base Derived private members inaccessible protected members protected members public members public members
  • 17. Constructor and Destructor It is possible for both the base class and the derived class to have constructor and/or destructor functions. The constructor functions are executed in order of derivation. i.e.the base class constructor is executed first. The destructor functions are executed in reverse order.
  • 18. Passing arguments What if the constructor functions of both the base class and derived class take arguments? 1. Pass all necessary arguments to the derived class’s constructor. 2. Then pass the appropriate arguments along to the base class.
  • 19. Example: Constructor of base class base { int i; public: base(int n) { cout << “constructing base n”; i = n; } ~base() { cout << “destructing base n”; } };
  • 20. Example: Constructor of derived class derived : public base { int j; public: derived (int n, int m) : base (m) { cout << “constructing derivedn”; j = n; } ~derived() { cout << “destructing derivedn”;} };
  • 21. Example: main() int main() { derived o(10,20); return 0; } constructing base constructing derived destructing derived destructing base
  • 22. Multiple Inheritance Type 1: base 1 derived 1 derived 2
  • 23. Multiple Inheritance • Type 2: base 1 base 2 derived
  • 24. Example: Type 2 // Create first base class class B1 { int a; public: B1(int x) { a = x; } int geta() { return a; } };
  • 25. Example: Type 2 // Create second base class class B2 { int b; public: B2(int x) { b = x; } int getb() { return b; } };
  • 26. // Directly inherit two base classes. class D : public B1, public B2 { int c; public: D(int x, int y, int z) : B1(z), B2(y) { c = x; } void show() { cout << geta() << getb() << c;} } ; Example: Type 2
  • 27. Potential Problem Base is inherited twice by Derived 3! Base Base Derived 1 Derived 2 Derived 3
  • 28. Virtual Base Class To resolve this problem, virtual base class can be used. class base { public: int i; };
  • 29. Virtual Base Class // Inherit base as virtual class D1 : virtual public base { public: int j; }; class D2 : virtual public base { public: int k; };
  • 30. Virtual Base Class /* Here, D3 inherits both D1 and D2. However, only one copy of base is present */ class D3 : public D1, public D2 { public: int product () { return i * j * k; } };
  • 31. Pointers to Derived Classes A pointer declared as a pointer to base class can also be used to point to any class derived from that base. However, only those members of the derived object that were inherited from the base can be accessed.
  • 32. Example base *p; // base class pointer base B_obj; derived D_obj; p = &B_obj; // p can point to base object p = &D_obj; // p can also point to derived // object
  • 33. Virtual Function A virtual function is a member function declared within a base class redefined by a derived class (i.e. overriding) It can be used to support run-time polymorphism.
  • 34. Example class base { public: int i; base (int x) { i = x; } virtual void func() {cout << i; } };
  • 35. Example class derived : public base { public: derived (int x) : base (x) {} // The keyword virtual is not needed. void func() {cout << i * i; } };
  • 36. Example int main() { base ob(10), *p; derived d_ob(10); p = &ob; p->func(); // use base’s func() p = &d_ob; p->func(); // use derived’s func() }
  • 37. Pure Virtual Functions A pure virtual function has no definition relative to the base class. Only the function’s prototype is included. General form: virtual type func-name(paremeter-list) = 0
  • 38. Example: area class area { public: double dim1, dim2; area(double x, double y) {dim1 = x; dim2 = y;} // pure virtual function virtual double getarea() = 0; };
  • 39. Example: rectangle class rectangle : public area { public: // function overriding double getarea() { return dim1 * dim2; } };
  • 40. Example: triangle class triangle : public area { public: // function overriding double getarea() { return 0.5 * dim1 * dim2; } };