【原创】【总结】【C++类的设计要点】一道十分典型的含继承与虚函数的类设计题

news2024/12/23 1:45:17

设计类时的要点
1构造函数与析构函数:先在public中写上构造函数与析构函数
2成员函数:根据题目要求在public中声明成员函数;成员函数的实现在类内类外均可,注意若在类外实现时用::符号表明是哪个类的函数
3数据成员:关注题目中出现/所需的名词,一般在private中
【题目】分别定义一个shape类,rectangle类,circle类。shape类中有虚函数getPrim获取周长,在rectangle类和circle类实现各自的getPrim函数得到各自周长;并在main函数中测试
【破题关键】先回顾虚函数:允许在派生类中重新定义与基类同名的函数,且可以通过基类指针访问基类和派生类中的同名函数
·下面为代码及运行
在这里插入图片描述
【代码实现】下为可运行代码

//分别定义一个shape类,rectangle类,circle类。shape类中有虚函数getPrim获取周长, 
//在rectangle类和circle类实现各自的getPrim函数得到各自周长;并在main函数中测试 
//【注】虚函数:允许在派生类中重新定义与基类同名的函数
//且可以通过基类指针访问基类和派生类中的同名函数  
#include "bits/stdc++.h" 
#include<iostream>
using namespace std;

#define PI 3.14159 
class shape{ //基类:图形 
	public:
		shape(){}
		~shape(){}
		virtual float getPerim() const=0; //基类虚函数:获取周长 
		
}; 

class Rectangle:public shape{ //子类:三角形 
	public:
		Rectangle(){}
		~Rectangle(){}
		Rectangle(float l,float w):length(l),width(w){} 
		virtual float getPerim() const; //派生类虚函数:获取周长 
	private:
		float length,width;

		
};

float Rectangle::getPerim() const{ 
	return 2*(length+width);
}

class Circle:public shape{ //子类:圆形  
	public:
		Circle(){}
		~Circle(){}
		Circle(float r):radius(r){}
		virtual float getPerim() const; //派生类虚函数:获取周长  
	private:
		float radius;

};

float Circle::getPerim() const{ 
	return 2*PI*radius;
}
	
int main(){ 
	shape *p; //基类指针 
	Circle circle(2);
	Rectangle rectangle(2,3);
	
	p=&circle; //通过基类指针访问派生类中同名函数 
	cout<<"The Perim of circle is ";
	cout<<p->getPerim()<<endl;
	
	p=&rectangle; //通过基类指针访问派生类中同名函数 
	cout<<"The Perim of rectangle is ";
	cout<<p->getPerim()<<endl;
	
	return 0; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128116.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32L051K8U6-HAL-串口中断控制灯闪烁速度

HAL三步法&#xff1a; 1、配置下载线 2、配置晶振 3、配置时钟 4、 配置灯引脚属性为输出模式。并设置标签为LED 5、配置串口1 串口常用函数说明&#xff1a; 需要实现的伪代码&#xff1a; 示例&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1u6FamKgZhvcEsFAdgGeaw…

Realsense D455 imu 数据不输出?

现象 realsense_viewer 可以可视化查看imu数据, 但是realsense-ros 查看/camera/accel/sample和/camera/gyro/sample没有数据输出 背景 realsense_viewer 安装: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE…

移动通信为啥要用双极化天线?

❝本文简单介绍下移动通信为啥要用双极化天线及其简单概述。 移动通信为啥要用双极化天线&#xff1f; - RFASK射频问问❝本文简单介绍下移动通信为啥要用双极化天线及其简单概述。什么是极化&#xff1f;电磁波的极化通常是用其电场矢量的空间指向来描述&#xff1a;在空间某…

Leetcode 字母异位词分组

这道题目的意思就是&#xff1a;把包含字母字符相同的单词分到同一组。 算法思路&#xff1a; 使用哈希表来解决。 首先将每个字符串进行排序&#xff0c;将排序之后的字符串作为 key&#xff0c;然后将用 key 所对应的异位词组 作为value。然后我们使用 std::pair 来遍历 键…

Vue的学习(三)

目录 一、for循环中key的作用 1‌.提高性能‌&#xff1a; ‌2.优化用户体验‌&#xff1a; ‌3.辅助Vue进行列表渲染‌&#xff1a; 4‌.方便可复用组件的使用‌&#xff1a; 二、methods及computed及wacth的区别 三、过滤器 1.Vue 2 过滤器简介 定义过滤器 使用过滤…

八、适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行合作。适配器模式通过创建一个适配器类来转换一个接口的接口&#xff0c;使得原本由于接口不兼容无法一起工作的类可以一起工作。 主要组成部分&#xff1a; 目标…

CUDA-中值滤波算法

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 中值滤波是一种常用的图像处理方法&#xff0c;特别适用于去除图像中的脉冲噪声&#xff08;如椒盐噪声&#xff09;。…

基于IOT的供电房监控系统(实物)

aliyun_mqtt.cpp 本次设计利用ESP8266作为系统主控&#xff0c;利用超声波检测门的状态&#xff0c;利用DHT11检测环境温湿度、烟雾传感器检测空气中的气体浓度&#xff0c;利用火焰报警器模块检测火焰状态&#xff0c;使用OLED进行可视化显示&#xff0c;系统显示传感器数据&a…

同相放大器电路设计

1 简介 同相放大电路输入阻抗为运放的极高输入阻抗&#xff08;GΩ级&#xff09;&#xff0c;因此可处理高阻抗输入源信号。同相放大器的共模电压等于输入信号。 2 设计目标 2.1 输入 2.2 输出 2.3 频率 2.4 电源 3 电路设计 根据设计目标&#xff0c;最终设计的电路结构…

python-确定进制

题目描述 6 942 对于十进制来说是错误的&#xff0c;但是对于 13 进制来说是正确的。即 6(13)​ 9(13)​42(13)​&#xff0c;而 42(13)​4 13^12 13^054(10)​。 你的任务是写一段程序读入三个整数 p,q 和 r&#xff0c;然后确定一个进制 B(2≤B≤16) 使得 p qr 。如果 B 有…

Vue3: 使用ref自动补齐.value

目录 一.老版本&#xff08;已经弃用TypeScript Vue Plugin (Volar)&#xff09; 二.新版本&#xff08;Vue - Official&#xff09; 三.勾选后重启VScode 四.效果 VScode中搜索Vue - Official插件 一.老版本&#xff08;已经弃用TypeScript Vue Plugin (Volar)&#xff0…

学习之git的远程仓库操作的常用命令

1 git remote -v 查看当前所有远程地址别名 2 git remote add 别名 远程地址 3 git push 别名 分支&#xff08;本地分支名称&#xff09; 推送本地分支到远程仓库 4 git pull 远程库别名 远程分支别名 拉取远程库分支&#xff08;更新代码&#xff09; 5 git clone 远程库地址…

【时间盒子】-【6.任务页面】在同一个页面新建、编辑任务

Tips: Column组件的使用&#xff1b; color.json资源文件的使用。 一、页面布局 页面分为三个部分&#xff0c;从上往下分别是&#xff1a;标题菜单栏、时间选择器和任务列表。每个部分都可以设计为独立的组件&#xff0c;后续文章分别介绍。 二、新建页面 右击pages目录&…

Vue:指令

目录 指令概念内容渲染指令**{{ }}****v-text****v-html** 属性绑定指令 v-bind绑定属性**绑定class****绑定style**动态绑定属性**绑定对象** 事件绑定指令 v-onv-on 基础event**$event** 双向绑定指令 v-modelv-model 基础v-model 值绑定**v-model 指令的修饰符** 条件渲染指…

解锁全球机遇:澳大利亚服务器租用市场的独特魅力

在浩瀚的全球数字版图中&#xff0c;澳大利亚以其独特的地理位置、丰富的资源禀赋、以及日益增长的数字经济活力&#xff0c;成为了众多互联网企业竞相布局的重要市场。特别是当谈及服务器租用这一关键环节时&#xff0c;澳大利亚以其稳定的网络环境、先进的基础设施和开放的市…

使用原生HTML的drag实现元素的拖拽

HTML 拖放&#xff08;Drag and Drop&#xff09;接口使应用程序能够在浏览器中使用拖放功能。例如&#xff0c;用户可使用鼠标选择可拖拽&#xff08;draggable&#xff09;元素&#xff0c;将元素拖拽到可放置&#xff08;droppable&#xff09;元素&#xff0c;并释放鼠标按…

GPIO 简介(STM32F407)

一、GPIO简介 什么是GPIO GPIO即通用输入输出端口&#xff0c;全称General Purpose Input Output&#xff0c;是控制或者采集外部器件的信息的外设&#xff0c;即负责输入输出。 它按组分配存在&#xff0c;每组最多16个IO口&#xff0c;组数视芯片而定。比如STM32F407ZGT6是…

今年中秋节买什么东西划算?精选五款好物清单合集推荐!

谈及中秋佳节选购什么好物&#xff0c;你可真是找对人了&#xff01;作为一位专注于节日氛围与生活美学的博主&#xff0c;对于哪些中秋好物能为您的佳节增添温馨与喜悦&#xff0c;我可是了如指掌。恰逢中秋佳节临近&#xff0c;各大商家纷纷推出精彩纷呈的优惠活动&#xff0…

AI产品经理必备技能:技术与能力升级图谱

目 录 CONTENTS 前言 第1章 AI产品经理——不是简单的“当产品经理遇上“AI” 001 1.1 三大浪潮看AI技术发展 002 1.2 AI产品和AI产品经理 003 1.3 成为AI产品经理三步走 011 1.3.1 第一步&#xff1a;找到自己的糖山 011 1.3.2 第二步&#xff1a;找到自己的比较优势 …

联合谱低秩先验和深度空间先验的高光谱图像无监督去噪

高光谱图像&#xff08;Hyperspectral Image, HSI&#xff09;具有丰富的光谱信息&#xff0c;广泛应用于遥感、环境监测和医学成像等领域。然而&#xff0c;高光谱图像常常受到噪声的干扰&#xff0c;这会影响后续的数据分析和应用。因此&#xff0c;设计有效的去噪算法是高光…