C++:继承性_程序

2024-05-01 15:28
文章标签 c++ 程序 继承性

本文主要是介绍C++:继承性_程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编译器:vs2022

main.cpp

#include <iostream>
#include <iomanip>
#include "person.h"const int Sum = 2;class Group
{
protected:PostGra st[Sum];int sum;
public:Group();void Input();void SortByID();void Output();
};Group::Group()
{sum = Sum;
}void Group::Input()
{int i;for (i = 0; i < sum; i++)st[i].Input();
}void Group::SortByID()
{int index, i, k;PostGra temp;for (k = 0; k < sum - 1; k++){index = k;for (i = k + 1; i < sum; i++)if (st[i].GetID() < st[index].GetID())index = i;if (index != k){temp = st[index];st[index] = st[k];st[k] = temp;}}
}void Group::Output()
{int i;std::cout << std::endl << "The group information:" << std::endl;std::cout << "ID" << std::setw(10) << "Name" << std::setw(10) << "Age" << std::setw(10) << "Gender" <<std::setw(10) << "Spec" << std::setw(10) << "research"<< std::endl;for (i = 0; i < sum; i++){std::cout << st[i].GetID() << std::setw(10) << st[i].GetName()<< std::setw(10) << st[i].GetGender() << std::setw(10) << st[i].GetSpeciality()<< std::setw(10) << st[i].GetResearchTopic() << std::setw(10) << st[i].GetAcademicTitle() << std::endl;}
}int main()
{Group group;group.Input();group.SortByID();group.Output();return 0;
}

person.h

#pragma once
#ifndef _PERSON
#define _PERSON
#include <string>class Person
{
protected:std::string ID;std::string name;std::string gender;
public:Person(std::string = "000", std::string = "unknown", std::string = "unknown");void Input();std::string GetID();std::string GetName();std::string GetGender();
};class Student : virtual public Person
{
protected:std::string speciality;
public:Student(std::string, std::string, std::string = "000", std::string = "unknown");void Input();std::string GetSpeciality();
};class Graduate :virtual public Student
{
protected:std::string researchTopic;
public:Graduate(std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();std::string GetResearchTopic();
};class Teacher :virtual public Person
{
protected:std::string academicTitle;
public:Teacher(std::string, std::string, std::string, std::string = "unknown");void Input();std::string GetAcademicTitle();
};class PostGra :public Graduate, public Teacher
{
public:PostGra(std::string=" ", std::string=" ", std::string=" ", std::string=" ", std::string = "000", std::string = "unknown");void Input();
};
#endif

person.cpp

#include "person.h"
#include <iostream>Person::Person(std::string id, std::string name, std::string gender)
{ID = id;name = name;gender = gender;
}void Person::Input()
{std::cout << "Enter ID: ";std::cin >> ID;std::cout << "Enter name: ";std::cin >> name;std::cout << "Enter gender: ";std::cin >> gender;
}std::string Person::GetID()
{return ID;
}std::string Person::GetName()
{return name;
}std::string Person::GetGender()
{return gender;
}Student::Student(std::string id, std::string name, std::string gender, std::string speciality) : Person(id, name, gender)
{speciality = speciality;
}void Student::Input()
{Person::Input();std::cout << "Enter speciality: ";std::cin >> speciality;
}std::string Student::GetSpeciality()
{return speciality;
}Graduate::Graduate(std::string id, std::string name, std::string gender, std::string speciality, std::string rese) :Person(id, name, gender), Student(id, name, gender, speciality)
{researchTopic = rese;
}void Graduate::Input()
{Student::Input();std::cout << "Enter research topic: ";std::cin >> researchTopic;
}std::string Graduate::GetResearchTopic()
{return researchTopic;
}Teacher::Teacher(std::string id, std::string name, std::string gender, std::string title) : Person(id, name, gender)
{academicTitle = title;
}void Teacher::Input()
{Person::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}std::string Teacher::GetAcademicTitle()
{return academicTitle;
}PostGra::PostGra(std::string id, std::string name, std::string gender, std::string speciality, std::string rese, std::string title) : Person(id, name, gender), Student(id, name, gender, speciality), Teacher(id, name, gender, title)
{;
}void PostGra::Input()
{Graduate::Input();std::cout << "Enter academic title: ";std::cin >> academicTitle;
}

这篇关于C++:继承性_程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952018

相关文章

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker