Tutorial C ++ warisan Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari & Berasal kelas dasar kelas,kontrol akses dan warisan,Jenis warisan,beberapa Warisan,
pemrograman berorientasi objek adalah konsep yang paling penting diwariskan. Warisan memungkinkan kita untuk mendefinisikan kelas untuk dasar kelas lain, yang membuat menciptakan dan memelihara aplikasi lebih mudah. Untuk melakukannya, juga mencapai penggunaan kembali fungsi kode dan meningkatkan hasil waktu eksekusi.
Ketika Anda membuat kelas, Anda tidak perlu menulis ulang data anggota dan fungsi anggota baru, hanya menentukan kelas baru mewarisi anggota yang ada kelas dapat. Kelas yang ada disebutkelas dasar, kelas baru ini disebut kelas turunan.
Warisan adalah perwakilan dari hubungan.Misalnya, mamalia adalah hewan, anjing adalah mamalia, oleh karena itu, anjing adalah hewan, dan sebagainya.
Sebuah kelas dapat diturunkan dari lebih dari satu kelas, yang berarti bahwa hal itu dapat mewarisi data dan fungsi dari beberapa kelas dasar. Mendefinisikan kelas turunan, kita menggunakan daftar kelas turunan untuk menentukan kelas dasar. Kelas daftar derivasi ke kelas satu atau lebih basis bernama bentuk berikut:
class derived-class: access-specifier base-class
Dimana akses modifier akses-specifier adalahpublik, dilindungi atau satu pribadi,dasar kelas didefinisikan sebelum nama kelas. Jika tidak ada akses modifier akses-specifier, defaultnya adalah pribadi.
Misalkan Anda memilikiShapekelasdasar,Rectangle kelas turunan, sebagai berikut:
#include <iostream> using namespace std; // 基类 class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // 派生类 class Rectangle: public Shape { public: int getArea() { return (width * height); } }; int main(void) { Rectangle Rect; Rect.setWidth(5); Rect.setHeight(7); // 输出对象的面积 cout << "Total area: " << Rect.getArea() << endl; return 0; }
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Total area: 35
kelas turunan dapat mengakses kelas dasar untuk semua anggota non-pribadi. Jadi jika Anda ingin menjadi anggota dari fungsi anggota kelas dasar dari akses kelas turunan harus dinyatakan di kelas dasar pribadi.
Kita dapat meringkas hak akses yang berbeda sesuai dengan jenis akses, sebagai berikut:
访问 | public | protected | private |
---|---|---|---|
同一个类 | yes | yes | yes |
派生类 | yes | yes | no |
外部的类 | yes | no | no |
Sebuah kelas turunan mewarisi semua metode kelas dasar, kecuali dalam keadaan berikut:
Ketika kelas berasal dari kelas dasar, kelas dasar dapat diwariskan sebagaipublik, dilindungi atau jenis pribadi.Melalui penjelasan di atas diwariskan jenis akses modifier akses-specifier untuk menentukan.
Kami hampir tidak menggunakandilindungi atau warisan pribadibiasanya digunakan warisanpublik.Ketika berbagai jenis warisan, mengikuti aturan berikut:
Multiple inheritance yaitu, subclass dapat memiliki lebih dari satu kelas induk yang mewarisi karakteristik kelas lebih dari satu orang tua.
C ++ class dapat mewarisi dari lebih dari satu anggota kelas sintaks berikut:
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,… { <派生类类体> };
Dimana warisan akses pengubahpublik, dilindungi atau satu pribadi,digunakan untuk menghias setiap kelas dasar, kelas dasar antara masing-masing dipisahkan dengan tanda koma, seperti yang ditunjukkan di atas. Sekarang mari kita lihat contoh berikut:
#include <iostream> using namespace std; // 基类 Shape class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; // 基类 PaintCost class PaintCost { public: int getCost(int area) { return area * 70; } }; // 派生类 class Rectangle: public Shape, public PaintCost { public: int getArea() { return (width * height); } }; int main(void) { Rectangle Rect; int area; Rect.setWidth(5); Rect.setHeight(7); area = Rect.getArea(); // 输出对象的面积 cout << "Total area: " << Rect.getArea() << endl; // 输出总花费 cout << "Total paint cost: $" << Rect.getCost(area) << endl; return 0; }
Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:
Total area: 35 Total paint cost: $2450