Rumah >pembangunan bahagian belakang >C++ >Spesifikasi standard bahasa C++ untuk kelebihan beban dan penulisan semula fungsi

Spesifikasi standard bahasa C++ untuk kelebihan beban dan penulisan semula fungsi

WBOY
WBOYasal
2024-04-21 09:09:01888semak imbas

Lebihan beban fungsi membolehkan anda mentakrifkan fungsi dengan nama yang sama dalam skop yang sama, tetapi memerlukan senarai parameter yang berbeza manakala menimpa fungsi membolehkan anda mentakrifkan fungsi dengan nama dan senarai parameter yang sama seperti kelas asas dalam kelas terbitan; memerlukan kata kunci ganti, jenis pulangan dan Senarai parameter adalah sama persis dengan fungsi kelas asas. Contoh overloading: print(int), print(double); contoh overwriting: foo() dalam kelas Derived mengatasi foo() dalam kelas Base.

C++ 语言标准对函数重载和重写的规范

Spesifikasi standard bahasa C++ untuk lebihan fungsi dan menulis semula

Fungsi lebih muatan

Lebihan memuatkan membenarkan berbilang fungsi ditakrifkan dengan nama yang sama dalam skop senarai yang sama, tetapi mesti berbeza dalam skop senarai. Standard bahasa C++ memerlukan lebihan fungsi untuk mengikut spesifikasi berikut:

  • Jenis pemulangan mestilah sama.
  • Senarai parameter mestilah berbeza, iaitu nombor, jenis atau susunan parameter.
  • const, tidak menentu dan kelayakan rujukan boleh digunakan untuk membezakan fungsi lebihan beban.

Contoh:

void print(int x);
void print(double x);

Fungsi mengatasi

Mengatasi membenarkan mentakrifkan fungsi dalam kelas terbitan dengan nama dan senarai parameter yang sama seperti dalam kelas asas. Standard bahasa C++ memerlukan penulisan semula fungsi untuk mengikut spesifikasi berikut:

  • Fungsi yang ditulis semula mesti mempunyai kata kunci ganti.
  • Jenis pulangan mestilah sama dengan fungsi kelas asas.
  • Senarai parameter mestilah betul-betul sama dengan fungsi kelas asas (termasuk jenis, susunan dan kelayakan).
  • Fungsi kelas terbitan mestilah tidak mempunyai hak akses yang lebih rendah daripada fungsi kelas asas (iaitu protected hanya boleh mengatasi fungsi dilindungi atau awam).

Contoh:

class Base {
public:
    virtual void foo();
};

class Derived : public Base {
public:
    override void foo() override;  // 重写基类中的 foo
};

Kes praktikal

Fungsi berlebihan:

#include <iostream>

using namespace std;

void print(int x) {
    cout << "int: " << x << endl;
}

void print(double x) {
    cout << "double: " << x << endl;
}

int main() {
    print(10);  // 调用 int 版本的 print
    print(3.14); // 调用 double 版本的 print
    return 0;
}

Fungsi penulisan semula:

#include <iostream>

using namespace std;

class Shape {
public:
    virtual void draw() = 0;  // 纯虚函数
};

class Rectangle : public Shape {
public:
    void draw() override {
        cout << "Drawing a rectangle" << endl;
    }
};

int main() {
    Rectangle r;
    r.draw(); // 调用 Rectangle 类中的重写函数
    return 0;
}

Atas ialah kandungan terperinci Spesifikasi standard bahasa C++ untuk kelebihan beban dan penulisan semula fungsi. 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