logo

C++ arv

I C++ er arv en proces, hvor et objekt erhverver alle egenskaber og adfærd for dets overordnede objekt automatisk. På denne måde kan du genbruge, udvide eller ændre de attributter og adfærd, som er defineret i andre klasser.

I C++ kaldes klassen, der arver medlemmerne af en anden klasse, afledt klasse, og klassen, hvis medlemmer er nedarvet, kaldes basisklasse. Den afledte klasse er den specialiserede klasse for basisklassen.


Fordel ved C++ arv

Kode genanvendelighed: Nu kan du genbruge medlemmerne af din forældreklasse. Så der er ingen grund til at definere medlemmet igen. Så der kræves mindre kode i klassen.

java input streng

Arvetyper

C++ understøtter fem typer af arv:

  • Enkeltarv
  • Multipel arv
  • Hierarkisk arv
  • Multilevel arv
  • Hybrid arv
C++ arv

Afledte klasser

En afledt klasse er defineret som den klasse, der er afledt af basisklassen.

str til int

Syntaksen for afledt klasse:

|_+_|

I ovenstående tilfælde tilsidesætter funktionen af ​​den afledte klasse basisklassens metode. Derfor vil kald til display()-funktionen blot kalde funktionen defineret i den afledte klasse. Hvis vi ønsker at aktivere basisklassefunktionen, kan vi bruge klasseopløsningsoperatoren.

 int main() { B b; b.display(); // Calling the display() function of B class. b.B :: display(); // Calling the display() function defined in B class. } 

C++ Hybrid arv

Hybrid arv er en kombination af mere end én type arv.

C++ arv

Lad os se et simpelt eksempel:

 #include using namespace std; class A { protected: int a; public: void get_a() { std::cout &lt;&lt; &apos;Enter the value of &apos;a&apos; : &apos; &lt;&gt;a; } }; class B : public A { protected: int b; public: void get_b() { std::cout &lt;&lt; &apos;Enter the value of &apos;b&apos; : &apos; &lt;&gt;b; } }; class C { protected: int c; public: void get_c() { std::cout &lt;&lt; &apos;Enter the value of c is : &apos; &lt;&gt;c; } }; class D : public B, public C { protected: int d; public: void mul() { get_a(); get_b(); get_c(); std::cout &lt;&lt; &apos;Multiplication of a,b,c is : &apos; &lt; <a*b*c<< std::endl; } }; int main() { d d; d.mul(); return 0; < pre> <p>Output:</p> <pre> Enter the value of &apos;a&apos; : 10 Enter the value of &apos;b&apos; : 20 Enter the value of c is : 30 Multiplication of a,b,c is : 6000 </pre> <h2>C++ Hierarchical Inheritance</h2> <p>Hierarchical inheritance is defined as the process of deriving more than one class from a base class.</p> <img src="//techcodeview.com/img/c-tutorial/62/c-inheritance-7.webp" alt="C++ Inheritance"> <p> <strong>Syntax of Hierarchical inheritance:</strong> </p> <pre> class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. } </pre> <p>Let&apos;s see a simple example:</p> <pre> #include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<></pre></a*b*c<<>

C++ Hierarkisk arv

Hierarkisk arv er defineret som processen med at udlede mere end én klasse fra en basisklasse.

C++ arv

Syntaks for hierarkisk arv:

 class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. } 

Lad os se et simpelt eksempel:

matrix-program i c-sprog
 #include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<>