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.hqwc.cn/news/618656.html

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

相关文章

Spark-机器学习(1)什么是机器学习与MLlib算法库的认识

从这一系列开始&#xff0c;我会带着大家一起了解我们的机器学习&#xff0c;了解我们spark机器学习中的MLIib算法库&#xff0c;知道它大概的模型&#xff0c;熟悉并认识它。同时&#xff0c;本篇文章为个人spark免费专栏的系列文章&#xff0c;有兴趣的可以收藏关注一下&…

【电控笔记5】电流环速度环三环参数整定

旋转坐标系下的电压方程,由id和iq计算出ud和uq Lq:q轴电感 Ld:d轴电感 输入是电流,输出是电压? 内嵌式pmsm(ipmsm)模型建立: 其中: λf是转子磁场在定子绕组所产生的磁通链,为一常数,在psms中转子磁场非常稳定几乎不变。 ipmsm转矩方程式: 对永磁同步马达而言,使…

Java代码基础算法练习-拆分一个三位数的个位、十位、百位-2024.04.14

任务描述&#xff1a;输入一个三位数&#xff0c;逆序输出这个三位数的个位、十位、百位对应的数字&#xff0c;用空格分开。 任务要求&#xff1a; 代码示例&#xff1a; package April_2024;import java.util.Scanner; public class a240414 {public static void main(Strin…

三角形最小路径和-java

题目描述: 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果正位于当前行的下标 i &#xff…

非对称加密学习

非对称加密&#xff0c;又称为公钥加密&#xff0c;是一种在网络中广泛使用的加密技术。它使用一对密钥来实现数据的加密和解密&#xff0c;这对密钥包括一个公钥和一个私钥。公钥是公开的&#xff0c;任何人都可以用来加密信息&#xff1b;私钥则是保密的&#xff0c;只有密钥…

分布式事务(一)

一、序言 本文介绍分布式事务相关的基本概念。 二、什么是分布式事务 分布式事务是指涉及多个独立计算机或系统的事务操作&#xff0c;这些计算机或系统可能位于不同的物理位置&#xff0c;彼此之间通过网络进行通信。分布式事务的目标是确保在分布式环境中的多个参与者之间…

安卓逆向 | 某X游戏垂类Web nonce

*本案例仅做分析参考,如有侵权请联系删除 1.逻辑分析 通过XHR断点,然后逐步往上调发现nonce生出处。 在console执行下函数 其中 i,是当前日期和时间的秒级时间戳,并将其向下取整到最接近的整数。 i = ~~(+_.w() / 1e3)w</

电影《你想活出怎样的人生》观后感

上周去看了宫崎骏电影《你想活出怎样的人生》&#xff0c;就像作为导演问观众的一个问题一样&#xff0c;宫崎骏老爷子&#xff0c;在电影中&#xff0c;给出了他的一些开放式答案。自己可是说是宫崎骏的粉丝&#xff0c;宫崎骏老爷子的大部分电影&#xff0c;自己基本都看过了…

Win10 使用Telnet

命令行 telnet 127.0.0.1 80 调试是否能连接服务 输入exit 回车即可退出 相比于ping的不同

7 个适用于 Windows 的最佳电脑分区数据恢复软件

磁盘分区对于正确存储数据以便从硬盘驱动器快速轻松地访问非常有帮助。但是&#xff0c;如果分区损坏&#xff0c;存储在其中的所有数据都会突然变得无法访问。磁盘分区损坏的原因可能有很多&#xff0c;其中最突出的是病毒攻击、突然断电、物理损坏或由于创建坏扇区。 但是&a…

八、Yocto 创建自定义的conf文件

文章目录 Yocto创建自定义的conf文件保存当前项目的配置文件使用自定义配置创建编译工作区 Yocto创建自定义的conf文件 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第八篇文章&#xff1a; 一、yocto 编译raspberrypi 4B并启动 二、yocto 集成ros2(基于raspberrypi 4B…

基于ssm的智慧餐厅点餐管理系统设计与实现(java项目+文档+元)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的智慧餐厅点餐管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 智慧餐厅点餐管理系统设计…