Warisan C ++

C Inheritance



Warisan adalah ciri yang sangat penting dari pengaturcaraan berorientasikan objek. Ini membolehkan pengaturcara memperoleh kelas dari kelas yang ada. Ini sangat berguna terutamanya dalam projek kompleks yang besar kerana membolehkan pengaturcara menggunakan semula kod tersebut.

Dalam artikel ini, kita akan membincangkan konsep pewarisan dalam pengaturcaraan C ++. Kami akan menerangkan konsep fungsi rakan dalam C ++ dengan contoh kerja.







Mengapa Warisan?

Warisan membolehkan mewujudkan kelas baru atau kelas turunan dari kelas lain atau kelas asas. Kelas turunan atau kelas anak akan mempunyai semua ciri kelas induk atau kelas asas. Kita boleh menggunakan semula kod tersebut dengan bantuan pewarisan.



Jenis Warisan

Terdapat pelbagai jenis warisan:



  1. Warisan Sederhana / Tunggal
  2. Warisan Hierarki
  3. Warisan Bertingkat
  4. Warisan Pelbagai

Dalam artikel ini, kita akan mempertimbangkan hanya warisan sederhana / tunggal.





Contoh 1:

Sekarang, mari kita teliti program contoh untuk memahami konsep pewarisan dalam C ++. Kami telah menentukan kelas asas dan kemudian memperoleh kelas lain daripadanya. Oleh itu, kelas yang diturunkan akan mempunyai ciri (anggota dan fungsi) dari kelas asas.

#sertakan

menggunakan namespace std;

kelas Base_Class
{
awam:
inti;
batalpaparan()
{
kos<< 'Paparan Kelas Asas' <<i<<endl;
}

};

kelas Derived_Class:Base_Class awam
{
awam:
bataltunjuk()
{
kos<< 'Pertunjukan Kelas Berasal' <<endl;
}
};

intutama()
{
Derived_Class dc;
dc.i = 100;
dc.paparan();
dc.tunjuk();

kembali 0;
}



Contoh 2:

Ini adalah contoh warisan lain di C ++. Dalam contoh ini, kita akan melihat bagaimana konstruktor dipanggil semasa objek kelas turunan dibuat.

Seperti yang anda lihat di bawah, kami telah menentukan dua pembina kelas asas dan tiga pembina kelas turunan. Anda dapat melihat dengan jelas dari output di bawah bahawa konstruktor kelas asas dipanggil terlebih dahulu sebelum konstruktor kelas asal dipanggil.

#sertakan
menggunakan namespace std;

kelas Base_Class
{
awam:
Base_Class()
{
kos<< 'Base_Class - Tanpa Parameter' <<endl;
}
Base_Class(intx)
{
kos<< 'Base_Class - Parameter:' <<x<<endl;
}
};

kelas Derived_Class:Base_Class awam
{
awam:
Berasal_Kelas()
{
kos<< 'Derived_Class - Tanpa Parameter' <<endl;
}
Berasal_Kelas(intdan)
{
kos<< 'Derived_Class - Parameter:' <<dan<<endl;
}
Berasal_Kelas(intx,intdan):Base_Class(x)
{
kos<< 'Param Derived_Class:' <<dan<<endl;
}
};

intutama()
{
Berasal_Kelas d(7,19);
}

Contoh 3:

Dalam contoh ini, kita akan melihat bagaimana objek kelas turunan dapat digunakan.

Seperti yang anda lihat, terdapat dua kelas yang ditentukan: Rectangle_Class dan Cube_Class. Rectangle_Class adalah kelas asas dari mana kelas turunannya, iaitu, Cube_Class berasal. Oleh itu, kami mewarisi ciri dari Rectangle_Class hingga Cube_Class.

Anda juga dapat melihat bahawa kami mewarisi Cube_Class dengan kawalan akses awam. Ini bermaksud bahawa kelas yang diturunkan dapat mengakses semua anggota kelas asas bukan swasta.

Kami telah menyatakan objek dari kelas turunan, dan kemudian memanggil kaedah dari kelas asas, iaitu, setLength () dan setBreadth ().

#sertakan

menggunakan namespace std;

kelas Rectangle_Class
{
peribadi:
intpanjang;
intkeluasan;
awam:
Rectangle_Class();
Rectangle_Class(intyang,intb);
Rectangle_Class(Rectangle_Class&r);
intgetLength()
{
kembalipanjang;
}
intgetBreadth()
{
kembalikeluasan;
}
batalsetLength(intyang);
batalsetBreadth(intb);
intkawasan();
};

kelas Cube_Class:Rectangle_Class awam
{
peribadi:
intketinggian;
awam:
Cube_Class(inth)
{
ketinggian=h;
}
intgetHeight()
{
kembaliketinggian;
}
batalset tinggi(inth)
{
ketinggian=h;
}
intisi padu()
{
kembaligetLength()*getBreadth()*ketinggian;
}
};


Rectangle_Class::Rectangle_Class()
{
panjang=1;
keluasan=1;
}
Rectangle_Class::Rectangle_Class(intyang,intb)
{
panjang=yang;
keluasan=b;
}
Rectangle_Class::Rectangle_Class(Rectangle_Class&r)
{
panjang=r.panjang;
keluasan=r.keluasan;
}
batalRectangle_Class::setLength(intyang)
{
panjang=yang;
}
batalRectangle_Class::setBreadth(intb)
{
keluasan=b;
}
intRectangle_Class::kawasan()
{
kembalipanjang*keluasan;
}

intutama()
{
Cube_Class c(8);
c.setLength(12);
c.setBreadth(9);
kos<<'Isipadu adalah'<<c.isi padu()<<endl;
}

Kesimpulan:

Dalam artikel ini, saya telah menerangkan konsep Warisan di C ++ . C ++ menyokong pelbagai jenis warisan termasuk pelbagai warisan (iaitu, mewarisi ciri dari beberapa kelas asas atau kelas induk). Walau bagaimanapun, untuk menjadikannya lebih mudah, saya hanya menganggap warisan tunggal di sini. Saya telah menunjukkan tiga contoh kerja untuk menjelaskan bagaimana kita dapat menggunakan warisan dalam pengaturcaraan C ++ dan menggunakan semula kodnya. Lebih-lebih lagi, ini adalah ciri C ++ yang sangat berguna.