#include <iostream>
#include <string>class Person {
public:std::string name;int age;// 主構造函數Person(const std::string& name, int age) : name(name), age(age) {std::cout << "Person created with name: " << name << " and age: " << age << std::endl;}// 委托構造函數Person() : Person("Unknown", 0) {std::cout << "Person created with default name and age." << std::endl;}
};class Student : public Person {
public:std::string major;// 繼承Person類的構造函數,語法就是這句,這里繼承了父類的所有構造函數using Person::Person;// Student類的構造函數,沒有我也能直接調用父類的Student(const std::string& name, int age, const std::string& major): Person(name, age), major(major) {std::cout << "Student created with major: " << major << std::endl;}
};int main() {Student s1("Alice", 20, "Computer Science"); // 調用Student類的構造函數Student s2("Bob", 22); // 調用繼承的Person類的構造函數Student s3; // 調用繼承的Person類的默認構造函數return 0;
}
和委托構造函數有點類似,繼承了來自于父類的構造函數。
輸出結果