#include <iostream>
#include "stdio.h"
#include "string"
using namespace std;
class Student
{
protected:
string name_;
int age_;
public:
void setStudent(string name, int age)
{
name_ = name;
age_ = age;
}
void printf()
{
cout << "姓名: " << name_ << " 年龄: " << age_ << endl;
}
int get_age()
{
return age_;
}
string get_name()
{
return name_;
}
};
class Collagestudent:public Student
{
private:
string major_;
public:
void setCStudent(string name, int age, string major)
{
name_ = name;
age_ = age;
major_ = major;
}
void printf()
{
cout << "姓名: " << name_ << " 年龄: " << age_ << " 专业: "<<major_<<endl;
}
};
void work(Student &s)
{
if (s.get_age() >=18)
cout <<s.get_name()<< "达到法定工作年龄" << endl;
else
cout << s.get_name() << "未达到法定工作年龄" << endl;
}
int main()
{
Student stu;
stu.setStudent("李明",15);
stu.printf();
Collagestudent cstu;
cstu.setCStudent("李雷", 18, "计算机");
cstu.printf();
Student stu1 = cstu;//将派生类对象赋值给基类对象
stu1.printf();
Student& rs = cstu;//将派生类的对象初始化基类的引用
rs.printf();
Student* ps = &cstu;//可以将派生类对象的地址赋给基类指针
ps->printf();
work(stu);//使用基类对象作为形参
work(cstu);//使用派生类对象作为形参
}