c++第四次实验-继承与派生

一、问题及代码

/*
* 文件名称:学生成绩
* 作    者:刘晓龙
* 完成日期:2016年5月6日
* 版 本 号:
* 对任务及求解方法的描述部分:继承与派生
* 输入描述:输入学生信息和班长信息
* 问题描述:打印学生信息和班长信息
* 程序输出:输出学生的信息和班长的信息
* 问题分析:运用继承和派生
* 算法设计:无
*/
#include <iostream>
#include <string>
using namespace std;
class Stu   //声明基类
{
public:
    Stu(int n, string nam );  //基类构造函数
    void display( );          //成员函数,输出基类数据成员
protected:        //(*)访问权限为保护型的数据成员
    int num;      //学生学号
    string name;  //学生姓名
};
Stu::Stu(int n ,string nam )
{
	name=nam;
	num=n;
};
void Stu::display()
{
	cout<<"班长信息:"<<endl;
	cout<<"姓名:"<<name<<endl;
	cout<<"学号:"<<num<<endl;
};
class StuDetail: public Stu              //声明派生类StuDetail
{
public:
    //学生nam,学号n,a岁,家住ad,他的班长是nam1,学号n1
    StuDetail(int n, string nam,int a, string ad,int n1, string nam1); //派生类构造函数
    void show( ); //成员函数,输出学生的信息
    void show_monitor( );    //成员函数,输出班长信息
private:
    Stu monitor;   //学生所在班的班长,班长是学生,是Stu类的成员
    int age;       //学生年龄
    string addr;   //学生的住址
};
StuDetail::StuDetail(int n,string nam,int a,string ad,int n1,string nam1):Stu(n,nam),monitor(n1,nam1)
{
	age=a;
	addr=ad;
}
void StuDetail::show_monitor()
{
	monitor.display();
};
void StuDetail::show()
{
	cout<<"学生信息:"<<endl;
	cout<<"姓名:"<<name<<endl;
	cout<<"学号:"<<num<<endl;
	cout<<"年龄:"<<age<<endl;
	cout<<"住址:"<<addr<<endl;
};
int main( )
{
    //学生张三,10010号,19岁,家住江西南昌,他的班长是李四,学号10001
    StuDetail s(10010,"张三",19,"江西南昌",10001,"李四");
    s.show( );                       //输出学生信息
    s.show_monitor();                //输出班长信息
    return 0;
}

二、运行结果

三、心得体会

对于StuDetail::StuDetail(int n,string nam,int a,string ad,int n1,string nam1):Stu(n,nam),monitor(n1,nam1)这里不懂,多看书了解缘由

四、知识点总结

不同继承方式的基类成员在派生类中的访问权限不同,派生类要声明

时间: 2024-10-10 23:08:41

c++第四次实验-继承与派生的相关文章

c++实验四 类的继承、派生和多态

实验目的 1. 理解类的继承和派生机制 2. 掌握派生类的定义和使用 3. 理解和掌握派生类成员的标识和访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 4. 掌握派生类构造函数和析构函数的定义及调用次序 5. 理解运算符重载的目的,掌握运算符重载函数的编写方法 实验内容 一.ElectricCar类 #ifndef BATTERY_H #define BATTERY_H class Battery { public: Battery(int nb = 70); int showbattery

实验四 类的继承、派生和多态(1)

一.实验内容 1.车辆基本信息管理 基于Car类派生出ElectricCar类.派生类ElectricCar中新增数据成员Battery类对象. #ifndef BATTERY_H #define BATTERY_H class Battery { public: Battery(int batterySize0=70); int getSize(); private: int batterySize; }; #endif battery.h #ifndef CAR_H #define CAR_

c++第四次作业 继承和派生

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片 /* * 文件名称:hj.cpp * 作    者:仲海亮 * 完成日期:2015 年 5月 6 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:无 * 问题描述: * 程序输出: * 问题分析:略 * 算法设计:略 */ #include <iostream> #include <string> using namespace std; class Person {

C++第四次实验——派生和继承1

一.问题及代码: /* * 文件名称:c++第四次实验--派生和继承1.cpp * 作 者:郭宇辉 * 完成日期:2016年 4 月 25 日 --草稿 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:根据一声明好的类及测试函数完成成员函数. * 输入描述:无 * 问题描述: * 程序输出:略 * 问题分析:略 * 算法设计:略 */ #include<iostream> #include<string> using namespace std; class Stu //

四.OC基础--1.文档安装和方法重载,2.self和super&amp;static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&amp;私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的

实验4 类的继承、派生和多态(1)

实验目的 1. 理解类的继承和派生机制 2. 掌握派生类的定义和使用 3. 理解和掌握派生类成员的标识和访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 4. 掌握派生类构造函数和析构函数的定义及调用次序 5. 理解运算符重载的目的,掌握运算符重载函数的编写方法 实验准备 1. 类的继承和派生 引入继承和派生机制的目的 基本概念:继承.派生.基类.直接基类.间接基类 .派生类 语法 派生类定义的语法格式(单重继承和多重继承) 派生类构造函数及其初始化列表书写形式 派生类成员的标识与访问 同名覆

实验五——类的多态,继承和派生2

Part1:验证型实验 1.在派生类函数中,如果是使用对象名.成员名进行访问,则最后运行结果是访问每一个派生类中的成员函数: 2.如果是通过指针来进行访问那么只会访问base1当中的成员函数,因为第一个程序里的BASE1并没有虚函数,所以base2和derived中的成员函数无法将其覆盖,所以只能访问指针当面默认指向的BASE1的成员函数,然而第二个程序使用了虚函数,虚函数的作用是通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数,第二个程序中的base1使用虚函数virtual,即此

嵌入式linux C++语言(七)——继承与派生

嵌入式linux C++语言(七)--继承与派生 一.继承 在C++编程中软件可重用性(software reusability)是通过继承(inheritance)机制来实现的.类的继承,是新的类从已有类那里得到已有的特性.或从已有类产生新类的过程就是类的派生.原有的类称为基类或父类,产生的新类称为派生类或子类. 派生类的声明:class 派生类名:[继承方式] 基类名{派生类成员声明:};    一个派生类可以同时有多个基类,这种情况称为多重继承,派生类只有一个基类,称为单继承. 继承方式规

c++学习--继承与派生

继承和派生 1 含有对象成员(子对象)的派生类的构造函数,定义派生类对象成员时,构造函数的执行顺序如下: 1 调用基类的构造函数,对基类数据成员初始化: 2 调用对象成员的构造函数,对对象成员的数据成员初始化: 3 执行派生类的构造函数体,对派生类数据成员初始化. 代码如下:#include<iostream.h> class base{ int x; public: base(int i) { x=i; cout<<"基类的构造函数"<<endl;