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; 
}

Tags: