Pengendalian rujukan dan penunjuk dalam fungsi C++ membebankan dan menulis semula

王林
Lepaskan: 2024-04-20 11:51:01
asal
410 orang telah melayarinya

Apabila melebihkan fungsi, hantar rujukan atau penuding, dan semua fungsi mesti menggunakan jenis data yang sama. Apabila fungsi ditulis semula, untuk fungsi ahli rujukan, fungsi subkelas mesti merujuk kepada jenis pembolehubah yang sama untuk menunjuk kepada fungsi ahli, fungsi subkelas mesti menunjuk kepada jenis pembolehubah yang sama.

C++ 函数重载和重写中引用和指针的处理

Pengendalian rujukan dan penunjuk dalam fungsi C++ terlebih beban dan mengatasi

Fungsi lebih muatan

Fungsi lebih muatan membolehkan penciptaan berbilang fungsi dengan nama yang sama tetapi senarai parameter berbeza dalam skop yang sama. Untuk rujukan dan petunjuk, kita perlu memberi perhatian kepada perkara berikut:

  • Apabila menghantar rujukan, semua fungsi mesti merujuk kepada jenis data yang sama:

    void print(const int& num);
    void print(const double& d);
    Salin selepas log masuk
  • Apabila menghantar penunjuk, semua berfungsi mesti menunjuk kepada jenis data yang sama:

    void print(int* num);
    void print(double* d);
    Salin selepas log masuk

Fungsi menulis semula

Fungsi menulis semula sedang melaksanakan fungsi dalam kelas induk dengan nama dan senarai parameter yang sama dalam kelas anak. Untuk rujukan dan petunjuk, kita perlu memberi perhatian:

  • Untuk fungsi ahli rujukan, fungsi subkelas mesti merujuk kepada jenis pembolehubah yang sama:

    class Parent {
    public:
      void setAge(const int& age);
    };
    
    class Child : public Parent {
    public:
      void setAge(const int& age) override;  // 同一类型引用
    };
    Salin selepas log masuk
  • Untuk menunjuk kepada fungsi ahli, fungsi subkelas mesti tunjuk kepada jenis pembolehubah yang sama :

    class Parent {
    public:
      int* getPtr();
    };
    
    class Child : public Parent {
    public:
      int* getPtr() override;   // 同一类型指针
    };
    Salin selepas log masuk

Kes praktikal

Andaikan kita mempunyai kelas Orang, yang mewakili umur dan nama seseorang. Terdapat dua fungsi ahli dalam kelas ini: setAge(const int& age) dan setName(const string& name). Person 类,它表示一个人的年龄和名字。该类中有两个成员函数:setAge(const int& age)setName(const string& name)

我们创建一个子类 Employee,继承自 Person 类,并重写 setAge 函数,在将年龄设置为 age 之前将其加 5。

class Person {
public:
    void setAge(const int& age);
    void setName(const string& name);
};

class Employee : public Person {
public:
    void setAge(const int& age) override;  // 重写setAge函数
};

// Employee 类中的 setAge 函数
void Employee::setAge(const int& age) {
    Person::setAge(age + 5);  // 调用父类setAge函数
}
Salin selepas log masuk

现在,我们可以创建一个 Employee 对象并使用重写的 setAge

Kami mencipta subkelas Pekerja, mewarisi daripada kelas Orang dan mengatasi fungsi setAge untuk menetapkan umur kepada umur </ kod> sebelum menambah 5 padanya. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>Employee emp; emp.setAge(20); // 实际设置为 25</pre><div class="contentsignin">Salin selepas log masuk</div></div>🎜Kini, kita boleh mencipta objek <code>Pekerja dan menggunakan fungsi setAge yang diganti: 🎜rrreee

Atas ialah kandungan terperinci Pengendalian rujukan dan penunjuk dalam fungsi C++ membebankan dan menulis semula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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