您好,登錄后才能下訂單哦!
在C++中,可以通過繼承和多態來模擬super
的功能。super
通常用于指向父類,以便在子類中訪問父類的成員和方法。以下是一個簡單的示例,展示了如何使用C++中的繼承和多態來模擬super
的功能:
Person
的基類,它有一個成員變量name
和一個成員函數greet
。#include <iostream>
#include <string>
class Person {
protected:
std::string name;
public:
Person(const std::string& n) : name(n) {}
virtual void greet() const {
std::cout << "Hello, my name is " << name << std::endl;
}
};
Student
的派生類,它有一個指向Person
類型的指針,用于模擬super
的功能。class Student : public Person {
private:
Person* super; // 用于指向父類對象的指針
public:
Student(const std::string& n, Person* s) : Person(n), super(s) {}
void greet() const override {
std::cout << "Hello, I am a student. ";
super->greet(); // 調用父類的greet函數
}
};
在這個例子中,Student
類有一個指向Person
類型的指針super
,用于存儲父類對象的地址。在Student
類的greet
函數中,我們通過調用super->greet()
來訪問父類的greet
函數,從而模擬了super
的功能。
int main() {
Person* person = new Person("Alice");
Student* student = new Student("Bob", person);
student->greet(); // 輸出:Hello, I am a student. Hello, my name is Alice
delete person;
delete student;
return 0;
}
在這個測試代碼中,我們首先創建了一個Person
對象和一個Student
對象。Student
對象通過指針super
引用了Person
對象。當我們調用student->greet()
時,它首先輸出"Hello, I am a student.“,然后調用父類的greet
函數,輸出"Hello, my name is Alice”。這表明我們成功地模擬了super
的功能。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。