Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

[C++] Functii virtuale C++


iza
 Share

Recommended Posts

O funcție virtuală este o funcție de membru în clasa de bază pe care ne așteptăm să o redefinim în clase derivate.

Practic, o funcție virtuală este utilizată în clasa de bază pentru a se asigura că funcția este suprascrisă. Acest lucru se aplică în special în cazurile în care un indicator al clasei de bază indică spre un obiect dintr-o clasă derivată.

De exemplu, luați în considerare codul de mai jos:

class Base {
   public:
    void print() {
        // code
    }
};

class Derived : public Base {
   public:
    void print() {
        // code
    }
};

Mai târziu, dacă creăm un indicator de tip Base pentru a indica spre un obiect de clasă Derived și apelăm funcția print(), apelează funcția print() a clasei de bază.

int main() {
    Derived derived1;
    Base* base1 = &derived1;

    // calls function of Base class
    base1->print();

    return 0;
}

Pentru a evita acest lucru, declarăm funcția print() a clasei base ca fiind virtual utilizând cuvântul cheie virtual.

class Base {
   public:
    virtual void print() {
        // code
    }
};

Funcțiile virtuale sunt o parte integrantă a polimorfismului în C++

 

Exemplu: Funcția virtuală C++:

#include <iostream>
using namespace std;

class Base {
   public:
    virtual void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1;

    // pointer of Base type that points to derived1
    Base* base1 = &derived1;

    // calls member function of Derived class
    base1->print();

    return 0;
}

Output:

Derived Function

Aici, am declarat funcția print() Base ca fiind virtuală.

Deci, această funcție este suprascrisă chiar și atunci când folosim un indicator de tip base care indică spre obiectul derivat1.

Link to comment
Share on other sites

  • Nic locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.