Penjelasan terperinci tentang warisan fungsi C++: Apakah hak akses yang diwarisi?

PHPz
Lepaskan: 2024-05-03 08:42:02
asal
1089 orang telah melayarinya

Dalam C++, akses kelas terbitan kepada fungsi kelas asas bergantung pada tahap warisan: awam: Kelas terbitan boleh mengakses dan mengatasi fungsi awam kelas asas tanpa sekatan. Dilindungi: Kelas terbitan hanya boleh mengakses dan mengatasi fungsi dilindungi kelas asas dan tidak boleh memanggilnya terus daripada objek kelas asas. peribadi: Kelas terbitan tidak boleh mengakses fungsi peribadi kelas asas.

C++ 函数继承详解:什么是继承访问权限?

Penjelasan terperinci tentang warisan fungsi C++: Apakah itu kebenaran akses yang diwarisi?

Dalam C++, apabila kelas terbitan mewarisi kelas asas, ia boleh mewarisi ahli kelas asas, termasuk fungsi. Bergantung pada kebenaran warisan, kelas terbitan mempunyai cara yang berbeza untuk mengakses fungsi kelas asas.

Tahap akses diwarisi

Terdapat tiga tahap akses diwarisi dalam C++:

  • awam: Kelas terbitan boleh mengakses dan mengatasi fungsi awam kelas asas tanpa sekatan.
  • protected: Kelas terbitan hanya boleh mengakses dan mengatasi fungsi dilindungi kelas asas, dan tidak boleh memanggilnya terus daripada objek kelas asas.
  • peribadi: Kelas terbitan tidak boleh mengakses fungsi peribadi kelas asas.

Kes praktikal

Pertimbangkan kelas asas dan kelas terbitan berikut:

class Base {
public:
  void public_function();
protected:
  void protected_function();
private:
  void private_function();
};

class Derived : public Base {
public:
  // 派生类可以无限制地访问 public 函数
  void call_public_function() {
    public_function();
  }

protected:
  // 派生类只能访问 protected 函数
  void call_protected_function() {
    protected_function();
  }
};
Salin selepas log masuk

Seperti yang dapat dilihat daripada contoh ini:

  • Kelas terbitan Terbitan boleh diakses melalui call_pub kaedah public_function kelas asas. Derived 可以通过 call_public_function 方法访问基类的 public_function
  • 派生类也可以通过 call_protected_function 方法访问基类的 protected_function
  • 派生类不能直接访问或重写基类的 private_function
  • Kelas terbitan juga boleh mengakses protected_function kelas asas melalui kaedah call_protected_function.

Kelas terbitan

tidak boleh

mengakses terus atau mengatasi fungsi_pribadi kelas asas kerana ia adalah peribadi.

🎜🎜Nota🎜🎜Perlu diperhatikan bahawa walaupun fungsi yang dilindungi kelas asas tidak boleh dipanggil terus daripada objek kelas asas, ia boleh dipanggil daripada fungsi yang dilindungi atau awam bagi kelas terbitan, dengan syarat yang diturunkan kelas mempunyai akses kepada fungsi yang dilindungi ini. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang warisan fungsi C++: Apakah hak akses yang diwarisi?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan