GJC
0
Q:

inheritance in c++

//Base class 
class Parent 
{ 
    public: 
      int id_p; 
}; 
   
// Sub class inheriting from Base Class(Parent) 
class Child : public Parent 
{ 
    public: 
      int id_c; 
}; 
1
// C++ Implementation to show that a derived class 
// doesn’t inherit access to private data members.  
// However, it does inherit a full parent object 
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 
}; 
3
#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();
}
1
Inheritance is one of the key features of Object-oriented programming in C++.
It allows us to create a new class (derived class) from an existing class (base class).

The derived class inherits the features from the base class and can have additional features of its own. 
  For example,

class Animal {
    // eat() function
    // sleep() function
};

class Dog : public Animal {
    // bark() function
};
Here, the Dog class is derived from the Animal class. 
Since Dog is derived from Animal, members of Animal are accessible to Dog.

Notice the use of the keyword public while inheriting Dog from Animal.

class Dog : public Animal {...};
We can also use the keywords private and protected instead of public

Example:
// C++ program to demonstrate inheritance

#include <iostream>
using namespace std;

// base class
class Animal {

   public:
    void eat() {
        cout << "I can eat!" << endl;
    }

    void sleep() {
        cout << "I can sleep!" << endl;
    }
};

// derived class
class Dog : public Animal {
 
   public:
    void bark() {
        cout << "I can bark! Woof woof!!" << endl;
    }
};

int main() {
    // Create object of the Dog class
    Dog dog1;

    // Calling members of the base class
    dog1.eat();
    dog1.sleep();

    // Calling member of the derived class
    dog1.bark();

    return 0;
}
Output

I can eat!
I can sleep!
I can bark! Woof woof!!
Here, dog1 (the object of derived class Dog) can access members of the base class Animal.
It's because Dog is inherited from Animal.
0

New to Communities?

Join the community