20240414,类的嵌套,分文件实现

笑死,和宝哥同时生病了 

一,封装-案例

1.0 立方体类
#include<iostream>//分别用全局函数和成员函数判定立方体是否相等
using namespace std;class Cube
{
public:int m_area;int m_vol;int geth(){return m_h;}int getl() { return m_l; }int getw() { return m_w; }void setcube(int h,int l,int w){m_h = h;m_l = l;m_w = w;}int getarea(int h, int l, int w){int area = 2 * (h * l + h * w + l * w);return area;}int getvolume(int h, int l, int w){int vol = h * l * w;return vol;}int ifsamehlw(Cube c1, Cube c2){if ((c1.m_h + c1.m_l + c1.m_w) == (c2.m_h + c2.m_l + c2.m_w))//和相等{if (c1.m_h != c2.m_h || c1.m_h != c2.m_l || c1.m_h != c2.m_w)//一条边相等{if (c1.m_l != c2.m_h || c1.m_l != c2.m_l || c1.m_l != c2.m_w)//两条边相等{return 1;}}}return 0;}int ifsamehlwtt(Cube &c2)//{if ((m_h + m_l + m_w) == (c2.m_h + c2.m_l + c2.m_w))//和相等{if (m_h != c2.m_h || m_h != c2.m_l || m_h != c2.m_w)//一条边相等{if (m_l != c2.m_h || m_l != c2.m_l || m_l != c2.m_w)//两条边相等{return 1;}}}return 0;}
private:int m_h;int m_l;int m_w;
};
bool ifsame(Cube& c1, Cube& c2);//不能放在类的前面!显示未设定的标识符
int main()
{Cube c1, c2;c1.setcube(3, 5, 6);c2.setcube(6, 5, 3);c1.m_area = c1.getarea(c1.geth(), c1.getl(), c1.getw());c1.m_vol= c1.getvolume(c1.geth(), c1.getl(), c1.getw());cout << "C1面积" << c1.m_area << "\tC1体积" << c1.m_vol << endl;c2.m_area = c2.getarea(c2.geth(), c2.getl(), c2.getw());c2.m_vol = c2.getvolume(c2.geth(), c2.getl(), c2.getw());cout << "C2面积" << c1.m_area << "\tC2体积" << c1.m_vol << endl;if (c1.ifsamehlw(c1, c2))//可以用,但是有点奇怪{cout << "xiangdneg" << endl;}if (c1.ifsamehlwtt(c2))//正常了,笑死{cout << "xiangdneg" << endl;}if (ifsame(c1, c2))//int &c1=c1;变量传入参数,用引用的方式接受,看不见的赋值运算{cout << "xiangdneg" << endl;}return 0;system("pause");
}//bool逻辑
bool ifsame(Cube& c1, Cube& c2)//引用的方式传递,不会再拷贝一份数据了
{if (c1.geth() + c1.getl() + c1.getw() == c2.geth() + c2.getl() + c2.getw())//和相等{if (c1.geth() != c2.geth() || c1.geth() != c2.getl() || c1.geth() != c2.getw())//一条边相等{if (c1.getl() != c2.geth() || c1.getl() != c2.getl() || c1.getl() != c2.getw())//两条边相等{return true;}}}return false;
}
1.1 点和⚪关系
0.1 没有嵌套
#include<iostream>//判断点和圆的位置关系
using namespace std;
class Circle
{int c_x;int c_y;int c_r;
public:void setc(int x, int y, int r){c_x = x;c_y = y;c_r = r;}int getcx() { return c_x; };int getcy() { return c_y; };int getcr() { return c_r; };
};
class Point
{int p_x;int p_y;
public:void setp(int x, int y){p_x = x;p_y = y;}int getpx() { return p_x; };int getpy() { return p_y; };
};
void relaction(Circle& c, Point& p);
int main()
{Circle c;Point p,p1;c.setc(0, 0, 10);p.setp(10, 0);p1.setp(11, 0);relaction(c, p);relaction(c, p1);return 0;system("pause");
}void relaction(Circle &c, Point &p)
{int distance = (c.getcx() - p.getpx()) * (c.getcx() - p.getpx()) +(c.getcy() - p.getpy()) * (c.getcy() - p.getpy());int rdistance = c.getcr() * c.getcr();if (distance == rdistance){cout << "点("<<p.getpx()<<","<<p.getpy()<<")在圆上" << endl;}else if (distance > rdistance){cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆外" << endl;}else{cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆内" << endl;}
}
0.2 嵌套类
#include<iostream>//判断点和圆的位置关系
using namespace std;
class Point
{int p_x;int p_y;
public:void setp(int x, int y){p_x = x;p_y = y;}int getpx() { return p_x; };int getpy() { return p_y; };
};
class Circle
{Point c_center;int c_r;
public:void setcr( int r){c_r = r;}void setcenter(Point &center){c_center = center;//两个点类相等就行}Point getcenter(){return c_center;}/*不对—不能直接访问点C_CENTER,只能通过行为访问int getcx() { return c_center.getpx(); };int getcy() { return c_center.getpy(); };*/int getcr() { return c_r; };
};
void relaction(Circle& c, Point& p);
int main()
{Circle c;Point p,p1,p2,center;//c.c_center.setp(0, 0);不可访问center.setp(0, 0);p.setp(10, 0);p1.setp(9, 0);p2.setp(12, 0);//初始化圆类c.setcr(10);c.setcenter(center);relaction(c, p);relaction(c, p1);relaction(c, p2);return 0;system("pause");
}void relaction(Circle &c, Point &p)
{int distance = (c.getcenter().getpx() - p.getpx()) * (c.getcenter().getpx() - p.getpx()) +(c.getcenter().getpy() - p.getpy()) * (c.getcenter().getpy() - p.getpy());int rdistance = c.getcr() * c.getcr();if (distance == rdistance){cout << "点("<<p.getpx()<<","<<p.getpy()<<")在圆上" << endl;}else if (distance > rdistance){cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆外" << endl;}else{cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆内" << endl;}
}
0.3 嵌套且分文件

调试的时候发现,全局函数运行的时候,每到一个局部函数就会跳到类里面执行,就还蛮好玩的乐 ,今天就学这么多吧,噶

#pragma once//防止重复包含
#include <iostream>
using namespace std;//头文件只保存声明
class Point
{int p_x;int p_y;
public:void setp(int x, int y);int getpx();int getpy();
};
#pragma once
#include <iostream>
#include "point.h"
using namespace std;class Circle
{Point c_center;int c_r;
public:void setcr(int r);void setcenter(Point& center);Point getcenter();int getcr() ;
};
#include "point.h"//只保留行为语句,函数的实现void Point::setp(int x, int y)//加上作用域,不加上就是全局函数
{Point::p_x = x;Point::p_y = y;
}
int Point::getpx() { return Point::p_x; }
int Point::getpy() { return Point::p_y; }
#include "point.h"
#include "circle.h"void Circle::setcr(int r)
{Circle::c_r = r;
}
void Circle::setcenter(Point& center)
{Circle::c_center = center;//两个点类相等就行
}
Point Circle::getcenter()
{return Circle::c_center;
}
int Circle::getcr(){ return Circle::c_r; }

 

#include<iostream>//判断点和圆的位置关系
using namespace std;
#include "point.h"
#include "circle.h"void relaction(Circle& c, Point& p);
int main()
{Circle c;Point p,p1,p2,center;//c.c_center.setp(0, 0);不可访问center.setp(0, 0);p.setp(10, 0);p1.setp(9, 0);p2.setp(12, 0);//初始化圆类c.setcr(10);c.setcenter(center);relaction(c, p);relaction(c, p1);relaction(c, p2);return 0;system("pause");
}void relaction(Circle &c, Point &p)
{int distance = (c.getcenter().getpx() - p.getpx()) * (c.getcenter().getpx() - p.getpx()) +(c.getcenter().getpy() - p.getpy()) * (c.getcenter().getpy() - p.getpy());int rdistance = c.getcr() * c.getcr();if (distance == rdistance){cout << "点("<<p.getpx()<<","<<p.getpy()<<")在圆上" << endl;}else if (distance > rdistance){cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆外" << endl;}else{cout << "点(" << p.getpx() << "," << p.getpy() << ")在圆内" << endl;}
}

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

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

相关文章

C# Window form 自定义控件的结构和设计(三)

C# Window form 自定义控件的结构和设计(三) 一、前面介绍了如何来创建第一个自定义的控件&#xff0c;以及一个测试程序。下面我们来看下如何在自定义控件中添加属性。 C#和其他.NET语言支持属性作为语言的第一类成员。把属性作为语言的基础属性有两点主要的有点&#xff1a…

Flutter第八弹 构建拥有不同项的列表

目标&#xff1a;1&#xff09;项目中&#xff0c;数据源可能涉及不同的模版&#xff0c;显示不同类型的子项&#xff0c;类似RecycleView的itemType, 有多种类型&#xff0c;列表怎么显示&#xff1f; 2&#xff09;不同的数据源构建列表 一、创建不同的数据源 采用类似Rec…

【设计模式】六大设计原则

设计原则 研究 23 种设计模式是困难的&#xff0c;甚至是没必要的六大设计原则零、单一职责原则开闭原则里氏代换原则依赖倒置原则接口隔离原则迪米特法则合成复用原则 研究 23 种设计模式是困难的&#xff0c;甚至是没必要的 设计模式有23种&#xff0c;我认为对普通人来说想…

快速寻找可以构建出网通信隧道的计算机

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 为加强内网的安全防范&#xff0c;安全管理员往往会限制内网计算机访问互联网&#xff0c;当然不同机构的限制策略是不一样的&#xff0c;有的完全阻断了内网计算机访问…

如何发布自己的Python库?

Python包发布 1、背景概述2、操作指南 1、背景概述 为什么我们要发布自己的Python库&#xff1f;如果你想让你的Python代码&#xff0c;通过pip install xxx的方式供所有人下载&#xff0c;那就需要将代码上传到PyPi上&#xff0c;这样才能让所有人使用 那么&#xff0c;如何发…

群晖双硬盘实时备份(WebDAV Server+Cloud Sync)

安装和设置 WebDAV Server WebDAV 是一种基于HTTP的协议扩展&#xff0c;它允许用户在远程Web服务器上进行文档的编辑和管理&#xff0c;就如同这些文件存储在本地计算机上一样。使用WebDAV&#xff0c;用户可以创建、移动、复制和修改文件和文件夹。 安装和设置 Cloud Sync…

使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

作者&#xff1a;朱亚光&#xff0c;之江实验室工程师&#xff0c;云原生/开源爱好者。 KubeSphere 边缘节点的可观测性 在边缘计算场景下&#xff0c;KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理&#xff0c;解决在海量边、端设备上完成应…

地球上四大洋介绍

地球上四大洋的分布是&#xff1a; 太平洋&#xff1a;太平洋是世界上最大的海洋&#xff0c;覆盖了约三分之一的地球表面。它位于亚洲、澳大利亚、美洲和南极洲之间。太平洋的面积约为1.6亿平方公里&#xff0c;拥有世界上最深的点——马里亚纳海沟。 大西洋&#xff1a;大西…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中&#xff0c;除了了解中间件&#xff0c;web漏洞&#xff0c;这些攻击的手法&#xff0c;还得了解应急响应&#xff0c;安全产品&#xff0c;入侵排查&#xff0c;溯源反制...... 那么今天&#xff0c;就来说一下安全产品&#xff08;安全公司我就不说了&#xff0c;这个…

001vscode为什么设置不了中文?

VSCode中文插件安装 在VSCode中设置中文的首要步骤是安装“Chinese (Simplified) Language Pack for Visual Studio Code”扩展插件。这一过程十分简单&#xff0c;只需打开VSCode&#xff0c;进入扩展市场&#xff0c;搜索“ Chinese (Simplified) Language Pack ”然后点击…

【MATLAB源码-第49期】基于蚁群算法(ACO)算法的栅格路径规划,输出最佳路径图和算法收敛曲线图。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蚁群算法是一种模拟自然界蚂蚁觅食行为的启发式优化算法。在蚁群系统中&#xff0c;通过模拟蚂蚁之间通过信息素沟通的方式来寻找最短路径。 在栅格路径规划中&#xff0c;蚁群算法的基本步骤如下&#xff1a; 1. 初始化: …

MES实施优势有哪些?MES制造执行系统的主要内容

各个行业之间也开始进入到了激烈的竞争当中&#xff0c;很多企业为了能够有效提升企业竞争力&#xff0c;都会通过提升自身实力的方式来提升竞争力。一些制造业也会在经营过程当中使用到MES系统&#xff0c;那么&#xff0c;mes系统的优势有哪些呢&#xff1f; 1、优化企业现场…

mysql dump导出导入数据

前言 mysqldump是MySQL数据库中一个非常有用的命令行工具&#xff0c;用于备份和还原数据库。它可以将整个数据库或者特定的表导出为一个SQL文件&#xff0c;以便在需要时进行恢复或迁移。 使用mysqldump可以执行以下操作&#xff1a; 备份数据库&#xff1a;可以使用mysqld…

ELK日志分析系统+Filebeat

目录 一、Filebeat介绍 1、Filebeat简介 2、Filebeat的工作方式 3、filebeat工作流程 4、Filebeat的作用 5、filebeat的用途 1.为什么要用filebeat来收集日志&#xff1f;为什么不直接用logstash收集日志&#xff1f; 2.filebeat和logstash的区别 二、部署(ELFK)Fileb…

自动化测试Junit

1.什么是Junit JUint是Java编程语言的单元测试框架&#xff0c;用于编写和运行可重复的自动化测试。 JUnit 促进了“先测试后编码”TDD的理念&#xff0c;强调建立测试数据的一段代码&#xff0c;可以先测试&#xff0c;然后再应用。这个方法就好比“测试一点&#xff0c;编码一…

【SERVERLESS】AWS Lambda上实操

通过Serverless的发展历程及带给我们的挑战&#xff0c;引出我们改如何改变思路&#xff0c;化繁为简&#xff0c;趋利避害&#xff0c;更好的利用其优势&#xff0c;来释放企业效能&#xff0c;为创造带来无限可能。 一 Serverless概述 无服务器计算近年来与云原生计算都是在…

OSPF星型拓扑和MGRE全连

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c; 3&#xff0c;R1为中心站点所有私有网段可以互相通讯&#xff0c;私有网段…

antd+vue——datepicker日期控件——禁用日期功能

需求&#xff1a;今天之前的日期禁用 <a-date-pickerv-model.trim"formNE.deliveryTime":disabled-date"disabledDate"valueFormat"YYYY-MM-DD"allowClearstyle"width: 100%" />禁用日期的范围&#xff1a; //时间范围 disab…

第14届java A组蓝桥杯做题记录

A题 特殊日期 package Java14省赛.Java研究生组;import java.time.Year; //特殊判断一下2月份&#xff0c;leaf 为true 1 import java.util.*;import 蓝桥杯.dfs_n皇后; public class 特殊日期 {static int sum(int d){int res 0;while(d > 0){res d % 10;d / 10;}return…

Java GC了解

Jstack找到线程的快照 jvm提供其他命令作用 jps&#xff1a; 虚拟机进程状况工具&#xff0c;类似linux的ps命令 jstat&#xff1a;虚拟机统计信息监视工具&#xff0c;经常看gc情况的会使用到 jinfo: java配置信息工具 jmap&#xff1a; java内存映射工具&#xff0c;dump&am…