Peraturan pewarisan untuk fungsi ahli C++

WBOY
Lepaskan: 2024-04-18 14:45:01
asal
1119 orang telah melayarinya

Peraturan warisan fungsi ahli C++: Warisan awam: Jika kelas terbitan mewarisi fungsi ahli kelas asas secara terbuka, maka fungsi ahli kelas terbitan juga awam. Warisan yang dilindungi: Jika kelas terbitan melindungi dan mewarisi fungsi ahli kelas asas, maka fungsi ahli kelas terbitan dilindungi. Warisan persendirian: Kelas terbitan secara persendirian mewarisi fungsi ahli kelas asas Fungsi ahli kelas terbitan adalah peribadi dan tidak boleh diakses secara langsung oleh kelas terbitan itu sendiri.

C++ 成员函数的继承规则

Peraturan warisan untuk fungsi ahli C++

Dalam pengaturcaraan berorientasikan objek C++, kelas boleh mewarisi ahli data dan fungsi ahli daripada kelas asas melalui pewarisan. Untuk pewarisan fungsi ahli, ikut peraturan berikut:

  • Warisan awam:Jika kelas terbitan mewarisi fungsi ahli kelas asas secara terbuka, maka fungsi ahli kelas terbitan juga awam.
  • Warisan dilindungi:Kelas terbitan melindungi fungsi ahli kelas asas yang diwarisi, kemudian fungsi ahli kelas terbitan dilindungi.
  • Warisan persendirian:Jika kelas terbitan mewarisi secara persendirian fungsi ahli kelas asas, maka fungsi ahli kelas terbitan adalah persendirian dan tidak boleh diakses secara langsung oleh kelas terbitan itu sendiri.

Contoh praktikal:

Pertimbangkan contoh berikut:

class Shape { public: virtual double getArea(); // 抽象函数 }; class Rectangle : public Shape { public: Rectangle(double length, double width); double getArea() override; // 重写父类的 getArea 函数 private: double length; double width; }; class Square : protected Shape { public: Square(double side); double getArea() override; private: double side; }; class Circle : private Shape { public: Circle(double radius); double getArea() override; private: double radius; };
Salin selepas log masuk

Dalam contoh ini:

  • KelasRectanglesecara terbuka mewarisi kelas>Shapecode> Fungsi getArea juga terbuka dalam kelasRectangle.Rectangle类公有继承 shape< code> 类,因此 getArea函数在 Rectangle类中也是公有的。 shape<>
  • Square类保护继承 shape< code> 类,因此 getArea函数在 Square类中也是保护的。 shape<>
  • Circle类私有继承 shape< code> 类,因此 getArea函数在 Circle shape<>
  • Kelas Squaredilindungi mewarisi kelas shape< code> , jadi fungsi getAreajuga dilindungi dalam kelas Square. shape<>

KelasLingkaransecara peribadi mewarisi kelas shape< code> , jadi fungsi getAreaadalah peribadi dalam kelas Circle. shape<>

    Nota:
  • Fungsi abstrak mesti ditindih dalam kelas terbitan.
  • Fungsi ahli kelas terbitan boleh mengakses ahli data dilindungi dan peribadi kelas asas, tetapi hanya boleh memanggil fungsi ahli awam dan dilindungi kelas asas.
Pembina dan pemusnah kelas terbitan tidak diwarisi daripada kelas asas.

Atas ialah kandungan terperinci Peraturan pewarisan untuk fungsi ahli C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!