C++ 程序设计 week 5 继承和派生

继承和派生

定义:

继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)。


 派生类是通过对基类进行修改和扩充得到的。在派生类中,可以扩充新的成员变量和成员函数。

 派生类一经定义后,可以独立使用,不依赖于基类。


写法:

class 派生类名:public 基类名

{


};


例子:

A类: Student:

B类: college student, graduate student

#include <iostream>
#include <string>
using namespace std;
class CStudent
{
 private:
 	string name;
 	string id; //学号
 	char gender; //性别,'F'代表女,'M'代表男
 	int age;
 public:
 	void PrintInfo();
 	void SetInfo( const string & name_,const string & id_,
	int age_, char gender_ );
 	string GetName() { return name; }
};
void CStudent::PrintInfo()
{
cout << "Name:" << name << endl;
cout << "ID:" << id << endl;
cout << "Age:" << age << endl;
cout << "Gender:" << gender << endl;
}
void CStudent::SetInfo( const string & name_,const string & id_,
 int age_,char gender_ )
{
name = name_;
id = id_;
age = age_;
gender = gender_;w
}
class CUndergraduateStudent:public CStudent
{//本科生类,继承了CStudent类
 private:
string department; //学生所属的系的名称
 public:
void QualifiedForBaoyan() { //给予保研资格
cout << “qualified for baoyan” << endl;
}
void PrintInfo() {
CStudent::PrintInfo(); //调用基类的PrintInfo
cout << “Department:” << department <<endl;
}
void SetInfo( const string & name_,const string & id_,
int age_,char gender_ ,const string & department_) {
CStudent::SetInfo(name_,id_,age_,gender_); //调用基类的SetInfo
department = department_;
}
};
int main()
{
 CUndergraduateStudent s2;
 s2.SetInfo(“Harry Potter ”, “118829212”,19,‘M’,“Computer Science”);
 cout << s2.GetName() << “ ” ;
 s2.QualifiedForBaoyan ();
 s2.PrintInfo ();
 return 0;
}
<pre name="code" class="cpp">Harry Potter qualified for baoyan
Name:Harry Potter
ID:118829212
Age:19
Gender:M
Department:Computer Science







2. 继承关系和复合关系

继承: 是的关系

复合: 有的关系


3. 访问范围说明符: private,  public

基类的private成员: 

可以被下列函数访问

• 基类的成员函数

• 基类的友员函数

基类的public成员:

可以被下列函数访问

• 基类的成员函数

• 基类的友员函数

• 派生类的成员函数

• 派生类的友员函数

• 其他的函数


访问范围说明符: protected

基类的protected成员: 可以被下列函数访问

• 基类的成员函数

• 基类的友员函数

• 派生类的成员函数可以访问当前对象的基类的保护成员(内部)


4. 构造函数以及调用顺序

先调用基类构造函数, 再调用子类构造函数

先调用子类构析函数, 在调用基类构析函数

构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。



5.小结

继承函数和成员

成员的可见性: protected, private,public

函数的修改性: 可以覆盖父类的函数

何时建立继承, 何时建立复合











【顶级EI完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI完整复现】【DRCC】考虑N-1准则的分布鲁棒机会约束低碳经济调度(Matlab代码实现)》的技术资源,聚焦于电力系统中低碳经济调度问题,结合N-1安全准则与分布鲁棒机会约束(DRCC)方法,提升调度模型在不确定性环境下的鲁棒性可行性。该资源提供了完整的Matlab代码实现,涵盖建模、优化求解及仿真分析全过程,适用于复杂电力系统调度场景的科研复现与算法验证。文中还列举了大量相关领域的研究主题与代码资源,涉及智能优化算法、机器学习、电力系统管理、路径规划等多个方向,展示了广泛的科研应用支持能力。; 适合人群:具备一定电力系统、优化理论Matlab编程基础的研究生、科研人员及从事能源调度、智能电网相关工作的工程师。; 使用场景及目标:①复现高水平期刊(如EI/SCI)关于低碳经济调度的研究成果;②深入理解N-1安全约束与分布鲁棒优化在电力调度中的建模方法;③开展含新能源接入的电力系统不确定性优化研究;④为科研项目、论文撰写或工程应用提供可运行的算法原型技术支撑。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码与案例数据,按照目录顺序逐步学习,并重点理解DRCC建模思想与Matlab/YALMIP/CPLEX等工具的集成使用方式,同时可参考文中列出的同类研究方向拓展研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值