5-3 多级派生类的构造函数

5-3  多级派生类的构造函数

Time Limit: 1000MS    Memory limit: 65536K

题目描述

要求定义一个基类protected的数据成员:姓名sex(char类型);一个构造函数用于对数据成员初始化。

Employee,增加两个数据成员 基本工资
leaveDays(Employee类的公有派生类);为它定义初始化成员信息的构造函数,和显示数据成员信息的成员函数共如示例数据所示,共<font
face=‘\"Times‘ new="" roman,="" serif\"="">5行,分别代表姓名、年龄、性别、基本工资、请假天数、业绩

示例输入

Jerry m 32 4200 1 100

示例输出

name:Jerry
age:32
sex:m
basicSalary:4200
leavedays:1
performance:100
 
<span style="font-size:18px;">#include<iostream>
#include<string>
using namespace std;
class person
{
 protected:
     string name;
     string sex;
     int age;
 public:
    person(string n,string s,int a):name(n),sex(s),age(a){}
    void display()
    {
        cout<<"name:"<<name<<endl;
        cout<<"age:"<<age<<endl;
        cout<<"sex:"<<sex<<endl;
    }
};
class emp:public person
{
private:
    int salary;
    int day;
public:
    emp(string n,string s,int a,int sa,int d):person(n,s,a),salary(sa),day(d){}
    void show()
    {
        cout<<"basicSalary:"<<salary<<endl;
        cout<<"leavedays:"<<day<<endl;
    }
};
class manager:public emp
{
private:
    int per;
public:
    manager(string n,string s,int a,int sa,int d,int p):emp(n,s,a,sa,d),per(p){}
    void show()
    {
        cout<<"performance:"<<per<<endl;
    }
};
int main()
{
    string name,sex;
    int age,salary,day,per;
    cin>>name>>sex>>age>>salary>>day>>per;
    person p(name,sex,age);
    emp e(name,sex,age,salary,day);
    manager  m(name,sex,age,salary,day,per);
    p.display();
    e.show();
    m.show();
}

</span>

时间: 2024-12-26 12:22:06

5-3 多级派生类的构造函数的相关文章

SDUTOJ 2713 5-3 多级派生类的构造函数

#include<iostream> #include<string> using namespace std; class Person { protected: string name; int age; char sex; public: Person(string nam, char s,int a) { name=nam; age=a; sex=s; } void display() { cout<<"name:"<<name&

多级派生情况下派生类的构造函数

#include <iostream> #include<string> using namespace std; class Student//声明基类 { public://公用部分 Student(int n, string nam)//基类构造函数 { num=n; name=nam; } void display( )//输出基类数据成员 { cout<<"num:"<<num<<endl; cout<<

对C++中派生类的构造函数和析构函数的认识

一:构造函数 形式:派生类名::派生类名:基类名1(参数1),基类名2(参数2),--基类名n(参数n),数据成员1(参数1),数据成员2(参数2),--数据成员n(参数n){ 各种操作的说明 } 执行过程:先执行基类的构造函数,再进行数据成员的赋值,最后执行函数体. 其中基类名和数据成员的顺序是由在派生类的定义中声明的顺序决定执行的顺序的,因此它们的顺序是任意的,但为了可读性,还是最好按顺序写. 如果基类只有默认构造函数,则基类名和参数表可以不用写出来. 二:复制构造函数 派生类的构造函数的形

C++构造函数 &amp; 拷贝构造函数 &amp; 派生类的构造函数 &amp; 虚继承的构造函数

构造函数 ,是一种特殊的方法 .主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 .特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载.(摘自百度百科构造函数). 一.最基本的构造函数 1 class Base 2 { 3 public: 4 Base(int var) : m_Var(var) 5 { 6 } 7 private: 8 int m_Var; 9 }; 以上构造函数的执行过程:

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

C++:派生类的构造函数和析构函数

4.2 派生类的构造函数和析构函数4.2.1 派生类构造函数和析构函数的执行顺序 通常情况下,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数:当撤销派生类对象时,则先执行派生类的派生类的析构函数,随后再执行基类的析构函数. //例4.5 派生类的构造函数和析构函的执行顺序 #include<iostream> using namespace std; class Base{ //声明基类Base public: Base() { cout<<"Co

c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)

測试源代码: //測试派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; } ~base() { cout<<"base destroyed!"<<endl; } };

【C++学习之路】派生类的构造函数(一)

一.简单派生类的构造函数: 1.所谓简单派生类,就是指派生类中不包含基类的内嵌对象的派生类. 2.一般来说,这样的派生类的构造函数的形式是: student( int i, string nam, int sid) : person( i, nam) { stuid = sid; } person(是基类的初始化列表) 3.构造函数的初始化列表的使用 3.1所有的构造函数都可以拿参数的初始化表来构造完全属于自己的数据成员,比如: 1 #include <iostream> 2 using na

sdut 5-2 派生类的构造函数

5-2 派生类的构造函数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 通过本题目的练习可以掌握派生类构造函数的定义和使用方法. 要求定义一个基类Person,它有3个protected的数据成员:姓名name(char *类型).性别 sex(char类型).年龄age(int类型):一个构造函数用于对数据成员初始化:有一个成员函数show()用于输出数据成员的信息. 创建Person类的公有派生类Employee,增加两