【C++】类和对象-封装

1.属性和行为作为整体

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.示例2-设计学生类

在这里插入图片描述

3.访问权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.class和struct的区别

在这里插入图片描述
在这里插入图片描述

5.成员属性设置为私有

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.设计案例1-立方体类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在main函数前重新补上isSame函数
在这里插入图片描述

在Cube类里面添加issamebyclass,利用成员函数判断两个立方体是否相等
在这里插入图片描述
在这里插入图片描述

自己写的代码:

#include <iostream>
using namespace std;

class Cube {
public:	//行为
	void setL(int l) {
		m_L = l;
	}
	int getL() {
		return m_L;
	}

	void setW(int w) {
		m_W= w;
	}
	int getW() {
		return m_W;
	}

	void setH(int h) {
		m_H = h;
	}
	int getH() {
		return m_H;
	}

	int calculateS() {
		return 2 * (m_L * m_W + m_L * m_H + m_H * m_W);
	}

	int calculateV() {
		return m_L * m_W * m_H;
	}

	bool IsSameByClass(Cube& c) {
		if (getL() == c.getL() && getW() == c.getW() && getH() == c.getH()) {
			return true;
		}
		return false;
	}

private://属性
	int m_L, m_W, m_H;
};

bool IsSame(Cube& c1, Cube& c2){
	if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()) {
		return true;
	}
	return false;
}

int main()
{
	Cube c1;
	c1.setL(10), c1.setW(10), c1.setH(10);
	cout << "c1_L=" << c1.getL() << "\tc1_W=" << c1.getW() << "\tc1_H=" << c1.getH()<<endl;
	cout << "c1_S=" << c1.calculateS() << "\tc1_V=" << c1.calculateV() << endl<<endl;

	Cube c2;
	c2.setL(10), c2.setW(10), c2.setH(10);
	cout << "c2_L=" << c2.getL() << "\tc2_W=" << c2.getW() << "\tc2_H=" << c2.getH() << endl;
	cout << "c2_S=" << c2.calculateS() << "\tc2_V=" << c2.calculateV() << endl << endl;

	bool flag = IsSame(c1,c2);
	if (flag) {
		cout << "两个立方体相等。" << endl << endl;
	}
	else {
		cout << "两个立方体不相等。" << endl<<endl;
	}

	bool flag_2 = c1.IsSameByClass(c2);
	if (flag_2) {
		cout << "BYclass两个立方体相等。" << endl << endl;
	}
	else {
		cout << "BYclass两个立方体不相等。" << endl << endl;
	}


	system("pause");

	return 0;
}

在这里插入图片描述

7.设计案例2-点和圆的关系

B站视频链接:
https://www.bilibili.com/video/BV1et411b73Z/?p=105&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=fb8dcae0aee3f1aab700c21099045395
在这里插入图片描述

main.cpp

#include <iostream>
using namespace std;

#include "circle.h"
#include "point.h"
//class Point {
//public:
//	void setX(float x) {
//		m_X = x;
//	}
//	float getX() {
//		return m_X;
//	}
//
//	void setY(float y) {
//		m_Y = y;
//	}
//	float getY() {
//		return m_Y;
//	}
//	
//private:
//	float m_X, m_Y;
//};

//class Circle {
//public:	//行为
//	void setR(float r) {
//		m_R = r;
//	}
//	float getR() {
//		return m_R;
//	}
//
//	void setCenter(Point center) {
//		m_Center = center;
//	}
//	Point getCenter() {
//		return m_Center;
//	}
//
//private://属性
//	Point m_Center;
//	float m_R;
//};

void isInCircle(Circle& c, Point& p) 
	{
	float r = sqrt(pow(c.getCenter().getX() - p.getX(), 2) +
		pow(c.getCenter().getY() - p.getY(), 2));
		if (pow(c.getR(), 2) < pow(r, 2)) 
		{
			cout << "点在圆外" << endl;
		}
	    else if (pow(c.getR(), 2) == pow(r, 2)) 
		{
			cout << "点在圆上" << endl;
		}
		else if (pow(r, 2) == 0)
		{
			cout << "点是圆心" << endl;
		}
		else
		{
			cout << "点在圆内" << endl;
		}
}

int main()
{
	Point p;
	p.setX(0);
	p.setY(9);
	Point center;
	center.setX(0);
	center.setY(0);
	
	Circle c;
	c.setCenter(center);
	c.setR(2);

	isInCircle(c, p);

	system("pause");

	return 0;
}

point.h

#pragma once
#include <iostream>
using namespace std;

class Point {
public:
	void setX(float x);
	float getX();

	void setY(float y);
	float getY();

private:
	float m_X, m_Y;
};

point.cpp

#include "point.h"


	void Point::setX(float x) {
		m_X = x;
	}
	float Point::getX() {
		return m_X;
	}

	void Point::setY(float y) {
		m_Y = y;
	}
	float Point::getY() {
		return m_Y;
	}

circle.h

#pragma once
#include <iostream>
using namespace std;
#include "point.h"

class Circle {
public:	//行为
	void setR(float r);
	float getR();

	void setCenter(Point center);
	Point getCenter();

private://属性
	Point m_Center;
	float m_R;
};

circle.cpp

#include "circle.h"



	void Circle::setR(float r) {
		m_R = r;
	}
	float Circle::getR() {
		return m_R;
	}

	void Circle::setCenter(Point center) {
		m_Center = center;
	}
	Point Circle::getCenter() {
		return m_Center;
	}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(四)RabbitMQ高级特性(消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列

Lison <dreamlison163.com>, v1.0.0, 2023.06.23 RabbitMQ高级特性&#xff08;消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列 文章目录 RabbitMQ高级特性&#xff08;消费端限流、利用限流实现不公平分发、消息存活时间、优先级队列消费端限流利用限流…

jenkins

Gitlab添加钩子 测试钩子 添加完成后&#xff0c;下面会出现钩子选择。点击test中的&#xff0c;push event。 出现successful&#xff0c;既添加成功。 如果添加失败&#xff0c;报错&#xff0c;更改Network

智能安全配电装置应用场景有哪些?

安科瑞 华楠 一、应用背景 电力作为一种清洁能源&#xff0c;给人们带来了舒适、便捷的电气化生活。与此同时&#xff0c;由于使用不当&#xff0c;维护不及时等原因引发的漏电触电和电气火灾事故&#xff0c;也给人们的生命和财产带来了巨大的威胁和损失。 为了防止低压配电…

妙记多 Mojidoc PC端(Mac 端+windows端)Beta版本正式上线!

你们呼唤了无数次的妙记多 Mojidoc PC客户端 Beta版本正式上线啦&#xff01; 感谢300位妙友积极参与内测&#xff0c;给予了我们很多非常有效的意见和建议&#xff01;我们会根据用户反馈不断优化和修复相关功能&#xff0c;在此感谢妙友们一直以来的支持&#xff5e; PC端拥…

Spring(10) 生成和替换Banner启动图案

目录 1.背景2.推荐网站3.如何集成到spring项目中4.效果展示 1.背景 我们在启动 Spring 项目的时候经常会看到一个 Spring 字样的启动图案。如下所示&#xff1a; 如果我们也想根据我们的内容生成这样的图案&#xff0c;应该怎么操作呢&#xff1f; 2.推荐网站 可以生成这种图…

Qt Core学习日记——第四天QMetaEnum(下)

类定义&#xff1a; 成员变量就只有QMetaObject *mobj和uint handle&#xff0c;handle同样用于计算在qt_meta_stringdata_XTest的位置 成员函数&#xff1a; 接下以test类进行函数讲解 test.h #pragma once #include <qobject.h> #include <QFlags> class X…

C语言非常道 6.4习题解答

关于 #include “stdarg.h” 相关知识小结&#xff1a; 函数&#xff1a;tppedef va_list char * ; va_list al; va_start(al, fmt) 使 al 指向变参函数中最后一个已知参数&#xff08;从右往左数的第一个已知参数&#xff09; va_arg(两个参数&#xff09;&#xff0c;第一个…

SpringBoot中配置文件的加载

springboot 启动会扫描一下位置的application.properties或者application.yml文件作为springboot的默认配置文件 file:./config/(项目根目录config文件夹下的配置文件) file:./(项目根目录下的配置文件) classpath:/config/(resources目录config文件下的配置文件) classpat…

【Android】Ubuntu20.04编译Android 13并用模拟器运行

前言 一直好奇Android系统是怎么定制的&#xff0c;直到亲自走一遍Android系统编译流程才发现并没想象的复杂。 这就跟app开发一样&#xff0c;Google官方其实都提供了平台、文档、IDE及一些工具&#xff0c;咱们只要按照官方提供的指南来操作就行了。 如果Android没有提供这…

中文输入法开发-关键代码

续上篇介绍了嵌入式Linux下中文输入法&#xff0c; 嵌入式Linux下开发中文输入法_嵌入式输入法_小刚学長的博客-CSDN博客 本篇继续介绍核心关键功能 展现效果图如下&#xff1a; 1、如何跟应用关联起来&#xff0c;比如说&#xff0c;希望当LineEdit 输入状态激活后&#xff0…

一文看懂FIFO!

什么是FIFO&#xff1f; FIFO: First in, First out 代表先进的数据先出 &#xff0c;后进的数据后出。 为什么需要FIFO&#xff1f; FIFO存储器是系统的缓冲环节&#xff0c;如果没有FIFO存储器&#xff0c;整个系统就不可能正常工作。 FIFO的功能可以概括为 &#xff0…

Python Flask构建微信小程序订餐系统 (十二)

🔥 创建切换商品分类状态的JS文件 🔥 ; var food_act_ops={init:function(){this.eventBind();},eventBind:function(){//表示作用域var that = this;$(".wrap_search select[name=status]").change(function(){$(".wrap_search").submit();});$(&qu…

java根据模板导出word

java根据模板导出word 日常开发中&#xff0c;常常会遇到各种各样的表格进行导出&#xff0c;比较好的办法就是提前弄好word模版&#xff0c;再通过遍历的方式进行导出文档 1、制作word模版 模版编写 内容替换 目标下面模版进行多页展示 将word转换成xml 将xml格式化 再将x…

HCIP——OSPF基础

OSPF基础 一、OSPF基础二、OSPF的区域划分三、OSPF的数据包hello包数据库描述包DBD包链路状态请求包LSR包链路状态更新包LSU包链路状态确认包LSAck包 四、OSPF的状态机五、OSPF的工作过程六、链路状态型的路由生成过程七、条件匹配五、OSPF数据包头部八、OSPF的接口网络类型 一…

STC12C5A系列单片机内部 EEPROM 的应用

参考范例程序。 eeprom.c #include "eeprom.h"/*---------------------------- Disable ISP/IAP/EEPROM function Make MCU in a safe state ----------------------------*/ void IapIdle() {IAP_CONTR 0; //Close IAP functionIAP_CMD 0; …

ubuntu docker离线安装docker(.deb包方式)(成功)(附卸载方法)

参考文章&#xff1a;Install Docker Engine on Ubuntu 文章目录 安装步骤下载安装包拷贝到目标主机并执行安装命令 验证拉取运行容器测试build dockerfile测试持久运行容器测试主机重启后&#xff0c;docker各服务是否正常自启 卸载方法附&#xff1a;各安装包作用说明&#x…

静态路由小实验

文章目录 一、实验要求及拓扑图二、实验步骤三、思考题 一、实验要求及拓扑图 二、实验步骤 1、创建VLAN&#xff0c;将端口划入vlan 在交换机S3、S4上创建VLAN10、20 Switch(config)#vl 10 Switch(config-vlan)#vl 20 S3(config)#int f0/3 S3(config-if)#switchport access …

音视频——帧内预测

H264编码(帧内预测) 在帧内预测模式中&#xff0c;预测块P是基于已编码重建块和当前块形成的。对亮度像素而言&#xff0c;P块用于44子块或者1616宏块的相关操作。44亮度子块有9种可选预测模式&#xff0c;独立预测每一个44亮度子块&#xff0c;适用于带有大量细节的图像编码&…

uniapp 之 微信小程序、支付宝小程序 对于自定义导航栏的不同

目录 前言 微信小程序 代码 支付宝小程序 首页配置文件 二级菜单页面 配置 总结 不同 相同 前言 小程序都是 uni-app 写的 不是原生 微信小程序 代码 pages.json文件中配置 重点&#xff1a; "navigationStyle": "custom", // 导航栏样式…

MAC 推送证书不受信任

配置推送证书的时候&#xff0c;一打开就变成不受信任&#xff0c;搜了很多解决版本。 由于苹果修改相关规定&#xff0c;推送证书 打开Apple PKI - Apple 下载AppleWWDRCA文件&#xff0c;选择G4,双击安装之后&#xff0c;证书已经变为受信任。 AppleWWDRCA(Apple Worldwid…
最新文章