< 1 >
派生类的声明
class human{
};
class student:public human{
};
student 是新建的类名
public 是表示基类中的成员再派生类中的继承方式。,若此项不写,则默认为私有。
human 是表示已写好的基类。
< 2 >
基本特性:
-
子类从基类接收成员是没有选择的。必须将基类的全部成员接收。(目前c++是无法做到 对于基类的内容有选择的接收)。
-
从基类接收的成员可被调整。
①改变基类成员在派生类的访问属性。
② 声明一个与基类成员同名的成员,则新成员覆盖基类的同名成员。(对于成员函数,不只是函数名相同,参数表也要相同,个数和类型)。
< 3 >
对于派生类新增的成员
当基类已实现部分数据的输入,输出,而派生类需对新增的数据进行与基类相同的操作时,
可以如以下代码:
# include <iostream>
using namespace std;
class human {
public:
human();
void get_();
void display_();
private:
string name;
string sex;
double age;
};
human::human() {
name = "\0";
sex = "\0";
age = 0;
}
void human::get_() {
cin >> name >> sex >> age;
}
void human::display_() {
cout << name << " " << sex << " " << age << endl;
}
//作为人类这一类的子类
class student :public human {
public:
student();
void get__();
void display__();
private:
int id;
int class_;
};
student::student() {
id = 0;
class_ = 0;
}
void student::get__() {
get_();
//新增
cin >> id >> class_;
}
void student::display__() {
display_();//公共继承子类可调用父类的公有函数
//新增部分
cout << id << " " << class_ << endl;
}
int main() {
student st;
st.get__();
st.display__();
return 0;
}
ps:什么是覆盖
(来自:https://www.cnblogs.com/cdp1591652208/p/7748546.html):
覆盖指的是子类覆盖父类函数(被覆盖,不存在),特征是:
- 分别位于子类和父类中
- 函数名字与参数都相同
- 父类的函数是虚函数(virtual)
隐藏指的是子类隐藏了父类的函数(还存在),具有以下特征:
-
子类的函数与父类的名称相同,但是参数不同,父类函数被隐藏
-
子类函数与父类函数的名称相同,参数也相同,但是父类函数没有virtual,父类函数被隐藏