Student::Student(string id, string name, char sex, int age) : m_id(id), m_name(name), m_sex(sex), m_age(age) {}
时间: 2023-05-17 07:07:24 浏览: 222
这是一个 C++ 中的构造函数,用于初始化 Student 类的对象的成员变量。其中,id、name、sex、age 分别代表学生的学号、姓名、性别和年龄。构造函数的定义中,m_id、m_name、m_sex、m_age 分别表示 Student 类的对象的成员变量,通过参数列表初始化。
相关问题
#include <iostream> #include <string> #include <cstdio> using namespace std; class Person { public: string name,addr,tel; int age; char sex; Person( string name_,int age_,char sex_,string addr_,string tel_ ) :name(name_),age(age_),sex(sex_),addr(addr_),tel(tel_){ } virtual void setTel(string newTel){ tel=newTel; } virtual void setAddr(string newAddr){ addr=newAddr; } }; class Student:public Person { public: string major; Student( string name_,int age_,char sex_,string addr_,string tel_,string major_ ) :Person( name_,age_,sex_,addr_,tel_ ),major(major_){} }; class Cadre:public Person { public: string post; Cadre( string name_,int age_,char sex_,string addr_,string tel_,string post_ ) :Person( name_,age_,sex_,addr_,tel_ ),post(post_){} }; class Student_Cadre:public Student,public Cadre { public: float wage; Student_Cadre( string name_,int age_,char sex_,string addr_,string tel_,string major_,string post_,float wage_ ) :Student( name_, age_, sex_, addr_, tel_, major_ ), Cadre( name_, age_, sex_, addr_, tel_, major_, post_),wage(wage_){} void display() { cout<<"name:"<<name<<endl; cout<<"age"<<age<<endl; cout<<"sex:"<<sex<<endl; cout<<"address:"<<addr<<endl; cout<<"tel:"<<tel<<endl; cout<<"major:"<<major<<endl; cout<<"post:"<<post<<endl; cout<<"wages:"<<wage<<endl; } }; int main( ) { string name, major, post, addr, tel; int age; char sex; float wage; cin>>name>>age>>sex>>addr>>tel>>major>>post>>wage; Student_Cadre st_ca(name, age, sex, addr, tel, major, post,wage); st_ca.display( ); cout<<endl; string newAddr, newTel1, newTel2; cin>>newAddr>>newTel1>>newTel2; // st_ca.setAddr(newAddr); // st_ca.Student::setTel(newTel1); // st_ca.Cadre::setTel(newTel2); st_ca.display( ); return 0; }
这是一个 C++ 程序,包含了多重继承和虚函数的使用。
程序中定义了一个 `Person` 类,包含了个人的基本信息;`Student` 类和 `Cadre` 类分别继承了 `Person` 类,表示学生和干部的信息;`Student_Cadre` 类同时继承了 `Student` 类和 `Cadre` 类,表示既是学生又是干部的人的信息,同时增加了一个 `wage` 成员变量表示工资。
在 `main` 函数中,首先输入一个学生干部的信息,然后调用 `display` 函数输出该人的信息。接着输入一个新的地址和两个新的电话号码,将这些新的信息设置给该人,并再次调用 `display` 函数输出该人更新后的信息。
需要注意的是,在 `Person` 类中定义了虚函数 `setTel` 和 `setAddr`,在 `Student_Cadre` 类中没有覆盖这些虚函数,因此需要通过类名限定的方式来调用 `Student` 类和 `Cadre` 类中的这些函数。具体来说,可以将注释去掉,将 `main` 函数中的三行代码取消注释即可。
那如果我的 person构造函数 Person(string name, int age, char sex) { _name=name; _age=age; _sex=sex; }这么去写,student构造函数怎么写呢
如果你的`Person`类构造函数已经如你所描述那样简单,那么`Student`类的构造函数可以直接基于这个基础,只增加`uid`这一额外属性。下面是`Student`类的构造函数示例:
```cpp
class Person {
public:
Person(const std::string& name, int age, char sex) : name_(name), age_(age), sex_(sex) {}
private:
std::string name_;
int age_;
char sex_;
};
class Student : public Person { // 继承Person
public:
Student(const std::string& name, int age, char sex, int uid) : Person(name, age, sex), _uid(uid) {
// 如果需要在初始化`Person`属性后再做其他操作,可以在这里添加
}
private:
int _uid;
};
```
在`Student`的构造函数中,首先调用`Person`的构造函数来设置共享的属性,然后设置`_uid`。如果不需要对`_uid`做特别处理,这通常是够用了。
阅读全文