当前位置:网站首页>C++学习——继承与派生

C++学习——继承与派生

2021-07-20 03:55:14 流楚丶格念

文章目录

普通继承

例题:定义一个名为Phone的手机类,有如下私有成员变量:品牌、型号、CPU、电池容量,如下成员函数:构造函数初始化手机的信息。在此基础上派生出NewPhone类,派生类增加了两个新的私有数据成员,分别用于表示颜色和价格,增加了一个成员函数用来输出手机信息。

代码如下:

#include <iostream>
#include<string>
#include<Windows.h>
using namespace std;

class Phone
{
public:
	string pinpai;
	string xinghao;
	string CPU;
	string dianchi;
	Phone(string s1, string s2, string s3, string s4);
	void Print();
private:
};

Phone::Phone(string s1, string s2, string s3, string s4)
{
	pinpai = s1;
	xinghao = s2;
	CPU = s3;
	dianchi = s4;
}
void Phone::Print()
{
	cout << "手机的品牌是:" << pinpai << endl;
	cout << "手机的型号是:" << xinghao << endl;
	cout << "手机的CPU是:" << CPU << endl;
	cout << "手机的电池容量是:" << dianchi << endl;
}


class NewPhone :public Phone
{
	string color;
	string price;
public:
	NewPhone(string s1, string s2, string s3, string s4, string s5, string s6) :Phone(s1, s2, s3, s4), color(s5), price(s6)
	{
	}
	void Print() {
		Phone::Print();
		cout << "手机的颜色是:" << color << endl;
		cout << "手机的价格是:" << price << endl;
	}
};

int main()
{

	NewPhone B("华为", "mate", "很大", "1000mA", "黄色", "100000");

	B.Print();
	system("pause");
	return 0;
}

      
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.

结果如下:
在这里插入图片描述

菱形继承

写一个菱形继承,如下图所示:在这里插入图片描述

写出类的具体结构和方法。

//兽王
class AnimalKing 
{

public:
	int weight;
	int height;
	int leg;
	void getWeight() 
	{ 
		cout << "请输入狮虎兽的体重:";
		cin>>weight;
	};
	void getHeight()
	{
		cout << "请输入狮虎兽的身高:";
		cin >> height;
	};
	void getLeg()
	{
		cout << "请输入狮虎兽的腿数:";
		cin >> leg;
	};
};

//老虎
class Tiger : virtual public AnimalKing 
{ 
public:
	void Putweight()
	{
		cout << "继承了老虎的体重"<< weight<< endl;
	}
	void Putheight()
	{
		cout << "继承了老虎的身高" << weight << endl;
	}
	void Putleg()
	{
		cout << "继承了老虎的腿数" << weight << endl;
	}
};

//狮子
class Lion : virtual public AnimalKing
{
public:
	void Putweight()
	{
		cout << "继承了狮子的体重" << weight << endl;
	}
	void Putheight()
	{
		cout << "继承了狮子的身高" << weight << endl;
	}
	void Putleg()
	{
		cout << "继承了狮子的腿数" << weight << endl;
	}
};

//狮虎兽
class Liger : public Tiger, public Lion
{
public:
	~Liger()
	{
		cout << "狮虎兽诞生了!" << endl;
	}
};

int main()
{
	Liger a;
	a.Tiger::getWeight();
	a.Tiger::Putweight();
	a.Lion::getHeight();
	a.Lion::Putheight();
	a.Lion::getLeg();
	a.Tiger::getLeg();
	a.Lion::Putleg();
	a.Tiger::Putleg();

	return 0;
}


      
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.

结果如下:
结果

版权声明
本文为[流楚丶格念]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15265965/2892177

随机推荐