0
点赞
收藏
分享

微信扫一扫

有关C++菱形继承,需要通过虚继承解决冲突的代码

爱薇Ivy趣闻 2022-03-15 阅读 60

运动员

游泳人   跑步人  自行车人  

铁人三项

#pragma warning(disable : 4996)
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;
 
struct Athlete
{
public:
    Athlete();
    ~Athlete();
};
Athlete::Athlete()
{
    cout << "Athlete Constructor" << endl;
}
Athlete::~Athlete()
{
    cout << "Athlete Destructor" << endl;
}

struct Swimmer: virtual Athlete
{
public:
    Swimmer();
    ~Swimmer();
};
Swimmer::Swimmer()
{
    cout << "Swimmer Constructor" << endl;
}
Swimmer::~Swimmer()
{
    cout << "Swimmer Destructor" << endl;
}

struct Runner :virtual Athlete
{
public:
    Runner();
    ~Runner();
};
Runner::Runner()
{
    cout << "Runner Constructor" << endl;
}
Runner::~Runner()
{
    cout << "Runner Destructor" << endl;
}

struct Cyclist : virtual Athlete
{
    Cyclist();
    ~Cyclist();
};
Cyclist::Cyclist()
{
    cout << "Cyclist Constructor" << endl;
}
Cyclist::~Cyclist()
{
    cout << "Cyclist Destructor" << endl;
}

struct Triathlete :Swimmer, Runner, Cyclist
{
public:
    Triathlete();
    ~Triathlete();
};

Triathlete::Triathlete()
{
    cout << "Triathlete Constructor" << endl;
}

Triathlete::~Triathlete()
{
    cout << "Triathlete Destructor" << endl;
}


int main()
{
    Triathlete T{};
    cout << "\n....Doing work....\n\n";
    return 0;
}
举报

相关推荐

0 条评论