I C++ er arv en prosess der ett objekt erverver alle egenskapene og oppførselen til det overordnede objektet automatisk. På en slik måte kan du gjenbruke, utvide eller endre attributtene og atferden som er definert i andre klasser.
I C++ kalles klassen som arver medlemmene av en annen klasse avledet klasse og klassen hvis medlemmer er arvet kalles basisklasse. Den avledede klassen er den spesialiserte klassen for basisklassen.
Fordel med C++ arv
Gjenbrukbarhet av kode: Nå kan du gjenbruke medlemmene i foreldreklassen din. Så det er ikke nødvendig å definere medlemmet på nytt. Så det kreves mindre kode i klassen.
returnerer arrays i java
Typer av arv
C++ støtter fem typer arv:
- Enkeltarv
- Multippel arv
- Hierarkisk arv
- Multilevel arv
- Hybrid arv
Avledede klasser
En avledet klasse er definert som klassen avledet fra basisklassen.
rom
Syntaksen for avledet klasse:
|_+_|I tilfellet ovenfor overstyrer funksjonen til den avledede klassen metoden til basisklassen. Derfor vil kall til funksjonen display() ganske enkelt kalle funksjonen definert i den avledede klassen. Hvis vi ønsker å påkalle basisklassefunksjonen, kan vi bruke klasseopplø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 kombinasjon av mer enn én type arv.
La oss se et enkelt eksempel:
#include using namespace std; class A { protected: int a; public: void get_a() { std::cout << 'Enter the value of 'a' : ' <>a; } }; class B : public A { protected: int b; public: void get_b() { std::cout << 'Enter the value of 'b' : ' <>b; } }; class C { protected: int c; public: void get_c() { std::cout << 'Enter the value of c is : ' <>c; } }; class D : public B, public C { protected: int d; public: void mul() { get_a(); get_b(); get_c(); std::cout << 'Multiplication of a,b,c is : ' < <a*b*c<< std::endl; } }; int main() { d d; d.mul(); return 0; < pre> <p>Output:</p> <pre> Enter the value of 'a' : 10 Enter the value of 'b' : 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'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 << 'Enter the length and breadth of a rectangle: ' <>length>>breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout << 'Area of the rectangle is : ' <<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base>>height; t.get_data(base,height); float n = t.triangle_area(); std::cout <<\\'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 definert som prosessen med å utlede mer enn én klasse fra en basisklasse.
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. }
La oss se et enkelt eksempel:
matriseprogram i c-språk
#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 << 'Enter the length and breadth of a rectangle: ' <>length>>breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout << 'Area of the rectangle is : ' <<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base>>height; t.get_data(base,height); float n = t.triangle_area(); std::cout <<\\'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<<>\\'area>\'eating...\'<