继承与派生类 学习笔记2
来源:互联网 发布:php数组值相加 编辑:程序博客网 时间:2024/05/16 02:08
派生类的构造函数与析构函数
注意:派生类是不能继承基类的构造函数和析构函数的。对于派生类的构造函数,由于派生类不能直接访问基类的私有成员,只能通过基类的方法进行访问,所以派生类构造函数必须使用基类的构造函数。
派生类需要析构函数完成一些必要的清理工作,必须定义自己的的析构函数。
头函数:
#ifndef INHERIT_H_#define INHERIT_H_const int READY=0;const int RUNNING=1;class Car{private:int status;public:Car(int s=READY);void StartCar();void StopCar();int GetStatus();};class FireCar:public Car{private:char way[10];public:FireCar(char* c="water",int s=READY);void PutFire(); //增加的方法};#endif
#include<iostream>#include<cstring>#include"Inherit.h"using namespace std;Car::Car(int s){status=s;}void Car::StartCar(){status=RUNNING;cout << "the car is running." << endl;}void Car::StopCar(){status=READY;cout << "the car is stopped." << endl;}int Car::GetStatus(){return status;}FireCar::FireCar(char* c,int s):Car(s){strcpy(way,c);}void FireCar::PutFire(){if(GetStatus()==RUNNING)cout << "this FireCar uses" << way<< "to put out the fire." << endl;elsecout << "Can't use a unusing FireCar to put out a fire." << endl;}
主函数:
#include<iostream>#include"Inherit.h"using namespace std;int main(){FireCar fc1;FireCar fc2("DryIce",RUNNING);cout << "For FireCar1:" << endl;fc1.PutFire();fc1.StartCar();fc1.PutFire();cout << endl;cout << "For FireCar2:" <<endl;fc2.PutFire();return 0;}
运行结果:
多重继承
代码:
//Multiin.h#ifndef MULTIIN_H_#define MULTIIN_H_class Student{private:int Number;char academy[20];public:Student(int n=1,char* aca="Sichuang University");int GetNumber() const{return Number;}char* GetAcad(){return academy;}};class Player{private:char event[20];public:Player(char* ev="football");char * GetEvent(){return event;}};class StuPlayer:public Student,public Player{private:char Name[10];public:StuPlayer(char* n="John",char* a="Sichuan University",int i=1,char* e="football");void ShowMe();};#endif
//Mltiin.cpp#include<iostream>#include<cstring>#include"Multiin.h"using namespace std;Student::Student(int n,char* aca){Number=n;strcpy(academy,aca);}Player::Player(char* ev){strcpy(event,ev);}StuPlayer::StuPlayer(char* n,char* a,int i,char* e):Student(i,a),Player(e){strcpy(Name,n);}void StuPlayer::ShowMe(){cout << "My name is" << Name << endl;cout << "I am a student in" << GetAcad() << endl;cout << "I am also a player. I play" << GetEvent() << endl;}
//usemult.cpp#include<iostream>#include"Multiin.h"using namespace std;int main(){StuPlayer st1;StuPlayer st2("Emily","Wuhan University",8,"basketball");cout << "For student player 1:" << endl;st1.ShowMe();cout << endl;cout << "For student player 2:" << endl;st2.ShowMe();return 0;}
结果:
- 继承与派生类 学习笔记2
- 继承与派生类 学习笔记1
- 继承与派生类 学习笔记3--虚基类
- PKU C++程序设计实习 学习笔记2 继承与派生
- 学习笔记之继承与派生
- C++继承与派生学习笔记
- C++继承与派生 笔记
- 派生类与继承
- 继承与派生类
- 继承与派生2
- 继承与派生2
- 继承与派生2
- 【C++学习笔记】继承与派生基础概念
- C++学习笔记——继承与派生(二)
- C++学习笔记——继承与派生
- c++学习笔记(1)继承与派生
- C++学习笔记——继承与派生
- 面向对象与C++程序设计-类的继承与派生学习笔记
- 动态创建数据库表
- hdu 1098
- 抽奖器html
- 对线性回归,logistic回归和一般回归的认识
- ORACEL发展历史
- 继承与派生类 学习笔记2
- 如何缩小LV(裸社备)
- Java文件操作基础
- Java上路18-I/O-File
- 刘敏华:微信营销,高转化率营销渠道
- hdu 1106
- Android获取SDCard上视频缩略图Thumbnail
- 10大最适合编程的字体推荐下载,让代码看起来更美更舒服!
- 【小蒙淘金】什么是国际现货黄金?