Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Mengganti Fungsi C++

Penggantian Fungsi C++

Dalam tutorial ini, kita akan belajar tentang fungsi overriding di C++ dengan bantuan contoh.

Seperti yang kita ketahui, pewarisan adalah fitur OOP yang memungkinkan kita membuat kelas turunan dari kelas dasar. Kelas turunan mewarisi fitur kelas dasar.

Misalkan, fungsi yang sama didefinisikan di kedua kelas turunan dan kelas berbasis. Sekarang jika kita memanggil fungsi ini menggunakan objek dari kelas turunan, fungsi dari kelas turunan akan dieksekusi.

Ini dikenal sebagai penggantian fungsi dalam C++. Fungsi di kelas turunan menggantikan fungsi di kelas dasar.


Contoh 1:Penggantian Fungsi C++

// C++ program to demonstrate function overriding

#include <iostream>
using namespace std;

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

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

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

Keluaran

Derived Function

Di sini, fungsi yang sama print() didefinisikan dalam keduanya Base dan Derived kelas.

Jadi, ketika kita memanggil print() dari Derived objek turunan1 , print() dari Derived dijalankan dengan mengganti fungsi di Base .

Seperti yang kita lihat, fungsi tersebut ditimpa karena kita memanggil fungsi dari objek Derived kelas.

Seandainya kita memanggil print() fungsi dari objek Base kelas, fungsinya tidak akan diganti.

// Call function of Base class
Base base1;
base1.print(); // Output: Base Function

Akses Fungsi yang Diganti di C++

Untuk mengakses fungsi kelas dasar yang diganti, kami menggunakan operator resolusi lingkup :: .

Kita juga dapat mengakses fungsi yang ditimpa dengan menggunakan pointer dari kelas dasar untuk menunjuk ke objek dari kelas turunan dan kemudian memanggil fungsi dari pointer tersebut.

Contoh 2:C++ Mengakses Fungsi yang Ditimpa ke Kelas Dasar

// C++ program to access overridden function
// in main() using the scope resolution operator ::

#include <iostream>
using namespace std;

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

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

int main() {
    Derived derived1, derived2;
    derived1.print();

    // access print() function of the Base class
    derived2.Base::print();

    return 0;
}

Keluaran

Derived Function
Base Function

Ini, pernyataan ini

derived2.Base::print();

mengakses print() fungsi dari kelas Base.


Contoh 3:Fungsi Penggantian Panggilan C++ Dari Kelas Turunan

// C++ program to call the overridden function
// from a member function of the derived class

#include <iostream>
using namespace std;

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

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

        // call overridden function
        Base::print();
    }
};

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

Keluaran

Derived Function
Base Function

Dalam program ini, kita telah memanggil fungsi yang ditimpa di dalam Derived kelas itu sendiri.

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

Perhatikan kode Base::print(); , yang memanggil fungsi yang diganti di dalam Derived kelas.


Contoh 4:Fungsi Penggantian Panggilan C++ Menggunakan Pointer

// C++ program to access overridden function using pointer
// of Base type that points to an object of Derived class

#include <iostream>
using namespace std;

class Base {
   public:
    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* ptr = &derived1;

    // call function of Base class using ptr
    ptr->print();

    return 0;
}

Keluaran

Base Function

Dalam program ini, kami telah membuat pointer Base ketik bernama ptr . Pointer ini menunjuk ke Derived objek turunan1 .

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

Saat kita memanggil print() fungsi menggunakan ptr , ia memanggil fungsi yang diganti dari Base .

// call function of Base class using ptr
ptr->print();

Ini karena meskipun ptr menunjuk ke Derived objek, sebenarnya dari Base Tipe. Jadi, ia memanggil fungsi anggota Base .

Untuk mengganti Base alih-alih mengaksesnya, kita perlu menggunakan fungsi virtual di Base kelas.


Bahasa C

  1. Operator C++
  2. Komentar C++
  3. Melewati Array ke Fungsi dalam Pemrograman C++
  4. Fungsi C++ dengan Contoh Program
  5. C - Fungsi
  6. Ikhtisar C++
  7. Konstanta/Literal C++
  8. Operator di C++
  9. Angka dalam C++
  10. C++ Overloading (Operator dan Fungsi)