c++ inheritance code example
Example 1: extends c++
class Animal {
public:
move();
}
class Dog: public Animal {
public:
move();
};
Example 2: inheritance protected in c++
class base
{
public:
int x;
protected:
int y;
private:
int z;
};
class publicDerived: public base
{
// x is public
// y is protected
// z is not accessible from publicDerived
};
class protectedDerived: protected base
{
// x is protected
// y is protected
// z is not accessible from protectedDerived
};
class privateDerived: private base
{
// x is private
// y is private
// z is not accessible from privateDerived
}
Example 3: inheritance in c++
#include <iostream>
// Example in a game we have multiple entities so we put commom functionality and variables in base class Entity and Create Sub Classes Of the base class
class Entity {
//This is a base class of all entities
public:
float x =0 , y = 0;//this is the position of entity
void Move(float xa, float ya) {
x += xa;
y += ya;
//this function moves entity
}
};
// in this example Player inherits from public entity
class Player:public Entity// inhertiting From Entity class
{
// Player class is a Sub class of Entity
//Player Class ha all the functions and var of public entity + some additional functionality and variables it is a superset of Entity
public :
const char* name = nullptr;
void Print() {
std::cout << name << std::endl;
}
//Player class has type of palyer and type of entity
//Because it has additional method Print and var name
//We can create entity from palyer because player has everything of entity but we can't create an Entity from player because it has additional things
};
int main()
{
Player D;
D.x = 5.5f;//initializing inherited variable
D.y = 4.4f;//initializing inherited variable
D.Move(1.1f,2.2f);//Calling inherited method
D.name = "Caleb";//initializing variable owned by player class
D.Print();//calling method owned by Player class
//Now looking at the size of each class
std::cout <<"Size of Entity was : " << sizeof(Entity) << std::endl;
std::cout <<"Size of Player was : "<< sizeof(Player) << std::endl;
//size of Entity output => 8
//size of Player output => 12
//because Entity has 2 floats = 4bytes +4 bytes =8 bytes
//Class Player has 2floats and const char ptr which is 4 bytes for 32 bit application = (4 +4 + 4)bytes = 12bytes
//Note:At the end inheretance is just a way to prevent code duplication
std::cin.get();
}
Example 4: c++ public inheritance not getting protected
class A
{
public:
int x;
protected:
int y;
private:
int z;
};
class B : public A
{
// x is public
// y is protected
// z is not accessible from B
};
class C : protected A
{
// x is protected
// y is protected
// z is not accessible from C
};
class D : private A // 'private' is default for classes
{
// x is private
// y is private
// z is not accessible from D
};
Example 5: multiple inheritance in c++
#include<iostream>
using namespace std;
class A
{
public:
A() { cout << "A's constructor called" << endl; }
};
class B
{
public:
B() { cout << "B's constructor called" << endl; }
};
class C: public B, public A // Note the order
{
public:
C() { cout << "C's constructor called" << endl; }
};
int main()
{
C c;
return 0;
}