這里如何將字串 a、字串 b、字串 c、int d、字串 e、字串 f 繼承到我的 Student 類中,并在其中添加 int r、字串 fs?
這里如何將字串 a, 字串 b, 字串 c, int d, 字串 e, 字串 f 繼承到我的教師類中并添加字串主題?
class Person{
public:
string name;
string level;
string group;
int age;
string phone;
string gender;
Person(string a, string b, string c, int d, string e, string f){
name = a;
level = b;
group = c;
age = d;
phone = e;
gender = f;
cout << "Student name: " << name << endl;
cout << "Study Position: " << level << endl;
cout << "Group: " << group << endl;
cout << "Age: " << age << endl;
cout << "Phone: " << phone << endl;
cout << "Gender: " << gender << endl << endl;
}
};
class Student: public Person{
public:
int roll;
string favoriteSubject;
Student(int r, string fs){
roll = r;
favoriteSubject = fs;
}
};
class Teacher: public Person{
public:
string subject;
Teacher(string s){
subject = s;
}
};
uj5u.com熱心網友回復:
如果我理解正確,只需將引數作為子類建構式的引數接收,并將其發送到父類的建構式:
class Teacher: public Person{
public:
std::string subject;
Teacher(
std::string a,
std::string b,
std::string c,
int d,
std::string e,
std::string f,
std::string s
) : Person(a, b, c, d, e, f), subject(s) { }
};
uj5u.com熱心網友回復:
我將這個問題解釋為“如何避免在派生類建構式中重復基類的每個建構式引數”。
如果是這種情況,那么您可以通過使用表示用于構建每個類的引數集的結構來對此進行近似:
#include <string>
using namespace std;
struct PersonParams {
string a;
string b;
string c;
int d;
string e;
string f;
};
struct StudentParams {
PersonParams p;
int r;
string fs;
};
struct TeacherParams {
PersonParams p;
string s;
};
class Person{
public:
string name;
string level;
string group;
int age;
string phone;
string gender;
Person(const PersonParams & params) {
// redacted...
}
};
class Student: public Person {
public:
int roll;
string favoriteSubject;
Student(const StudentParams & params)
: Person(params.p),
roll(params.r),
favoriteSubject(params.fs) {}
};
class Teacher: public Person {
public:
string subject;
Teacher(const TeacherParams& params)
: Person(params.p),
subject(params.s) {}
};
int main() {
Teacher mr_dude({
{"Mr. Dude", "lvl3", "grp_a", 43, "555-1234", "M"},
"Maths"
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369636.html
