C语言-类的菱形继承

题目:学生的存储格式为姓名-性别-学号,教师的存储格式为姓名-性别-职工号, 但是小明作为一名学生的同时,也是一位教师,为了节省空间并增强代码复用性, 决定使用菱形继承,请设计一套类用于解决这一问题并测试它

#include <stdio.h>

#include <iostream>

using namespace std;

class CBaseInfo {

public:

CBaseInfo(char *pName, int nSex) {

m_pName = _strdup(pName);

m_nSex = nSex;

printf("CBaseInfo\n");

}

CBaseInfo(CBaseInfo& obj) {

m_pName = _strdup(obj.m_pName);

m_nSex = obj.m_nSex;

}

~CBaseInfo() {

if (m_pName) {

delete[] m_pName;

m_pName = nullptr;

}

}

char* m_pName;

int m_nSex;

};

class CStu :virtual public CBaseInfo {

public:

int m_nNumOfStu;

CStu(char *pName, int nSex, int nNum)

:CBaseInfo(pName, nSex), m_nNumOfStu(nNum)

{

printf("CStu\n");

}

};

class CTeacher :virtual public CBaseInfo {

public:

int m_nNumOfTeacher;

CTeacher(char *pName, int nSex, int nNum)

:CBaseInfo(pName, nSex), m_nNumOfTeacher(nNum) {

printf("CTeacher\n");

}

};

class CStuTec : public CStu, public CTeacher {

public:

CStuTec(char *pName, int nSex, int nNumStu, int nNumTec)

:CStu(pName, nSex, nNumStu), CTeacher(pName, nSex, nNumTec),

CBaseInfo(pName, nSex)

{

printf("CStuTec\n");

}

};

int main(int *argc,char *argv[])

{

CStuTec obj("xiaoming",1,2,3);

printf("姓名:%s\n 性别:%d\n,学号:%d\n,职工号:%d\n",obj.m_pName,obj.m_nSex,obj.m_nNumOfStu,obj.m_nNumOfTeacher);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值