C++学习——继承与派生「建议收藏」

C++学习——继承与派生「建议收藏」普通继承例题:定义一个名为Phone的手机类,有如下私有成员变量:品牌、型号、CPU、电池容量,如下成员函数:构造函数初始化手机的信息。在此基础上派生出NewPhone类,派生类增加了两个新的私有数据成员,分别用于表示颜色和价格,增加了一个成员函数用来输出手机信息。代码如下:#include <iostream>#include<string>#include&l…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

文章目录

普通继承

例题:定义一个名为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;
}

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

菱形继承

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

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

//兽王
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;
}

结果如下:
结果

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171001.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 查看win11激活状态[通俗易懂]

    查看win11激活状态[通俗易懂](一)命令行查看:slmgr.vbs-dlv如上图所示,windows11已激活。(二)右键计算机属性查看(1)单击系统:(2)单击激活:可以看到已经处于激活状态。

    2022年5月7日
    64
  • 数据库课程设计(学校运动会管理系统)[通俗易懂]

    数据库课程设计(学校运动会管理系统)[通俗易懂]这学期学习了数据库之后,到结尾写个数据库课程设计,下面这个课程设计可是我花了好长时间才写完,先供大家参考目录1需求分析…………………………………………………………4      1.1功能性需求分析……………………………………………4      1.2性能分析……………………………………………………4      1.

    2022年5月19日
    51
  • SQL server 查询语句「建议收藏」

    SQL server 查询语句「建议收藏」select*fromtest.dbo.users–普通条件查询whereid=1;模糊查询 select*fromtest.dbo.users whereusernamelike’%li%’;范围查询 select*fromtest.dbo.users –id在1~3之间的数据 whereidbetween1and3; select*fromtest.dbo.users –id在1~3以外的数据 where.

    2022年6月4日
    15
  • “备份集中的数据库备份与现有的数据库不同”解决方法「建议收藏」

    “备份集中的数据库备份与现有的数据库不同”解决方法「建议收藏」原文发布时间为:2010-09-16——来源于本人的百度文章[由搬家工具导入]最主要就是要在“选项”中选择“覆盖现有数据库”,否则就会出现“备份集中的数据库备份与现有的数据库”的问题。以前一直使用SQLServer2000,现在跟潮流都这么紧,而且制定要求使用SQLServer2005,就在现在的项目中使用它了。对于SQLServer2005,有几个地方是要注意的,比方在还原数据库…

    2022年4月30日
    50
  • 详解java重定向和转发的区别

    详解java重定向和转发的区别重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL,而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。怎么选择是重定向还是转发呢?通常情况

    2025年10月4日
    3
  • Java 中构造器、初始化块、静态初始化块的执行顺序

    Java 中构造器、初始化块、静态初始化块的执行顺序静态初始化块 &gt; 初始化块 &gt; 构造器 父类 &gt; 子类综合下来顺序就是:父类静态初始化块 子类静态初始化块 父类初始化块 父类构造器 子类初始化块 子类构造器需要注意静态初始化块是在类第一次加载的时候就会进行初始化。…

    2022年6月13日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号