Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah peranan yang dimainkan oleh pemusnah dalam polimorfisme dalam C++?

Apakah peranan yang dimainkan oleh pemusnah dalam polimorfisme dalam C++?

王林
王林asal
2024-06-03 20:30:00348semak imbas

Pemusnah adalah penting dalam polimorfisme C++, memastikan objek kelas yang diperolehi membersihkan memori dengan betul apabila ia dimusnahkan. Polimorfisme membenarkan objek daripada jenis yang berbeza untuk bertindak balas kepada panggilan kaedah yang sama. Pemusnah dipanggil secara automatik apabila objek dimusnahkan untuk melepaskan ingatannya. Pemusnah kelas terbitan memanggil pemusnah kelas asas untuk memastikan memori kelas asas dilepaskan.

C++ 中析构函数在多态性中扮演什么角色?

Peranan pemusnah dalam polimorfisme dalam C++

Pemusnah memainkan peranan penting dalam polimorfisme dalam C++ Ia memastikan objek kelas terbitan dimusnahkan dengan cara yang sesuai untuk membersihkan ingatannya.

Pengenalan kepada Polimorfisme

Polymorphism ialah keupayaan untuk membenarkan objek daripada jenis yang berbeza untuk bertindak balas kepada panggilan kaedah yang sama. Dalam C++, ini dicapai melalui pewarisan dan fungsi maya.

Destructor

Destructor ialah fungsi ahli khas yang dikaitkan dengan kelas yang dipanggil secara automatik apabila objek kelas itu dimusnahkan. Ia bertanggungjawab untuk membebaskan sebarang memori atau sumber yang diperuntukkan oleh objek.

Peranan pemusnah dalam polimorfisme

Apabila objek kelas terbitan dicipta, memori akan diperuntukkan untuk menyimpan ahli data unik kepada kelas terbitan. Walau bagaimanapun, apabila objek kelas terbitan dimusnahkan, memori kelas asas juga perlu dikeluarkan. Pemusnah memastikan ini dengan memanggil pemusnah kelas asas.

Contoh Praktikal

Pertimbangkan kod berikut:

class Base {
public:
    Base() { std::cout << "Base constructed" << std::endl; }
    virtual ~Base() { std::cout << "Base destructed" << std::endl; }
};

class Derived : public Base {
public:
    Derived() { std::cout << "Derived constructed" << std::endl; }
    ~Derived() { std::cout << "Derived destructed" << std::endl; }
};

int main() {
    Base* base = new Derived();
    delete base;
    return 0;
}

Output:

Base constructed
Derived constructed
Derived destructed
Base destructed

Dalam contoh ini, ingatan kelas Derived 类派生自 Base 类。当 Derived 对象通过 new 运算符被创建时,DerivedBase 构造函数都会被调用。当对象通过 delete 运算符被销毁时,Derived 析构函数会先被调用,释放 Derived 类的内存。然后,Base 析构函数会被调用,释放 Base.

Atas ialah kandungan terperinci Apakah peranan yang dimainkan oleh pemusnah dalam polimorfisme dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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