C++ valodā mantošana ir process, kurā viens objekts automātiski iegūst visas tā galvenā objekta īpašības un darbības. Tādā veidā jūs varat atkārtoti izmantot, paplašināt vai modificēt atribūtus un uzvedību, kas definēta citā klasē.
C++ valodā klasi, kas manto citas klases locekļus, sauc par atvasinātu klasi, un klasi, kuras locekļi tiek mantoti, sauc par bāzes klasi. Atvasinātā klase ir specializētā klase bāzes klasei.
C++ mantojuma priekšrocības
Koda atkārtota izmantošana: Tagad varat atkārtoti izmantot vecāku klases dalībniekus. Tātad dalībnieks nav jādefinē vēlreiz. Tātad klasē ir nepieciešams mazāk koda.
arraylist un linkedlist
Mantojuma veidi
C++ atbalsta piecus mantojuma veidus:
- Vienreizējs mantojums
- Daudzkārtējs mantojums
- Hierarhiskā mantošana
- Daudzlīmeņu mantošana
- Hibrīda mantojums
Atvasinātās klases
Atvasinātā klase ir definēta kā klase, kas atvasināta no bāzes klases.
kā pārvērst int par java virkni
Atvasinātās klases sintakse:
|_+_|Iepriekš minētajā gadījumā atvasinātās klases funkcija ignorē bāzes klases metodi. Tāpēc funkcijas display() izsaukšana vienkārši izsauks atvasinātajā klasē definēto funkciju. Ja vēlamies izsaukt bāzes klases funkciju, varam izmantot klases izšķirtspējas operatoru.
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++ hibrīda mantošana
Hibrīda mantošana ir vairāku veidu mantojuma kombinācija.
Apskatīsim vienkāršu piemēru:
#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++ hierarhiskā mantošana
Hierarhiskā mantošana ir definēta kā vairāk nekā vienas klases atvasināšanas process no bāzes klases.
Hierarhiskā mantojuma sintakse:
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. }
Apskatīsim vienkāršu piemēru:
noņemiet npm kešatmiņu
#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...\'<