封装(个人学习笔记黑马学习)

1、格式

#include <iostream>
using namespace std;const double PI =3.14;//设计一个圆类,求圆的周长
class Circle {//访问权限//公共权限
public://属性//半径int m_r;//行为//获取圆的周长double calculateZC() {return 2 * PI * m_r;}
};int main() {//通过圆类创造具体的圆Circle c1;c1.m_r = 10;cout << "圆的周长:" << c1.calculateZC() << endl;system("pause");return 0;
}


2、案例:设计学生类

设计一个学生类,属性有姓备和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

#include <iostream>
using namespace std;
#include <string>class Studentt {
public:string m_Name;int m_Id;void showStudent() {cout << "姓名:" << m_Name << " 学号:" << m_Id << endl;}//给姓名赋值void setName(string name) {m_Name = name;}//给学号赋值void setId(int id) {m_Id = id;}
};int main() {Studentt s1;//s1.m_Name = "张三";s1.setName("张三");s1.setId(1);s1.showStudent();Studentt s2;s2.m_Name = "李四";s2.m_Id = 2;s2.showStudent();system("pause");return 0;
}


3、权限访问

1. public公共权限

2. protected 保护权限

3. private私有权限

#include <iostream>
using namespace std;
#include <string>//1. public公共权限     成员 类内可以访问 类外也可以访问
//2. protected保护权限  成员 类内可以访问 类外不可以访问   儿子可以访问父亲中的保护内容
//3. private私有权限    成员 类内可以访问 类外不可以访问   儿子不可以访问父亲中保护的内容class Person {//公共权限
public:string m_Name;//保护权限
protected:string m_Car;//私有权限
private:int m_Password;public:void func() {m_Name = "张三";m_Car = "拖拉机";m_Password = 123456;}};int main() {Person p1;p1.m_Name = "李四";//p1.m_Car = "奔驰";//保护权限内容 在类外访问不到//p1.m_Password = 23456;//私有权限内容,在类外访问不到system("pause");return 0;
}

4、class和struct区别

  • struct 默认权限为公共
  • class默认权限为私有
#include <iostream>
using namespace std;
#include <string>class C1 {int m_A;//默认权限是私有
};struct C2 {int m_A;//默认权限是公共
};int main() {C1 c1;//c1.m_A = 100;C2 c2;c2.m_A = 100;system("pause");return 0;
}

5、成员属性私有化

#include <iostream>
using namespace std;
#include <string>class Person {public://设置姓名void setName(string name) {m_Name = name;}//获取姓名string getName() {return m_Name;}int getAge() {m_Age = 10;return m_Age;}void setLover(string lover) {m_Lover = lover;}private:string m_Name;//可读可写int m_Age;//只读string m_Lover;//只写
};int main() {Person p;p.setName("张三");cout << "姓名:"<<p.getName()<< endl;cout << "年龄:" << p.getAge() << endl;p.setName("梨花");system("pause");return 0;
}


6、案例设计:立方体类

设计立方体类(Cube)
求出立方体的面积和体积
分别用全局函数和成员函数判断两个立方体是否相等

#include <iostream>
using namespace std;
#include <string>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 + 2 * m_W * m_H + 2 * m_L * m_H;}int calculateV() {return m_H * m_L * m_W;}//利用成员函数判断两个立方体是否相等bool isSameByClass(Cube& c) {if (m_L == c.getL() && m_W == c.getW() && m_H == c.getH()) {return true;}return false;
}private:int m_L;int m_W;int 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的面积为:" << c1.calculateS() << endl;cout << "c1的体积为:" << c1.calculateV() << endl;Cube c2;c2.setL(10);c2.setW(10);c2.setH(10);cout << "c2的面积为:" << c2.calculateS() << endl;cout << "c2的体积为:" << c2.calculateV() << endl;bool ret=isSame(c1, c2);if (ret) {cout << "c1,c2相等" << endl;}else {cout << "c1,c2不相等" << endl;}int ret2= c1.isSameByClass(c2);if (ret2) {cout << "c1,c2相等" << endl;}else {cout << "c1,c2不相等" << endl;}int ret3 = c2.isSameByClass(c1);if (ret3) {cout << "c1,c2相等" << endl;}else {cout << "c1,c2不相等" << endl;}system("pause");return 0;
}


7、案例设计:点和圆的关系

设计一个圆形类(Circle),和一个点类 (Point) ,计算点和圆的关系

#include <iostream>
using namespace std;
#include <string>class Point {
public:void setX(int x) {m_X = x;}int getX() {return m_X;}void setY(int y) {m_Y = y;}int getY() {return m_Y;}private:int m_X;int m_Y;
};class Circle {public:void setR(int r) {m_R = r;}int getR() {return m_R;}void setCenter(Point center) {m_Center = center;}Point getCenter() {return m_Center;}private:int m_R;Point m_Center;//圆心
};void isInCircle(Circle& c, Point& p) {//计算两点之间距离 平方int distance =(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());//计算半径的平方int rDistance = c.getR() * c.getR();//判断关系if (distance == rDistance) {cout << "点在圆上" << endl;}else if (distance > rDistance) {cout << "点在圆外" << endl;}else {cout << "点在圆内" << endl;}
}int main(){//创建圆Circle c;c.setR(10);Point center;center.setX(10);center.setY(10);c.setCenter(center);//创建点Point p;p.setX(10);p.setY(11);//判断关系isInCircle(c, p);system("pause");return 0;
}


point.h

#pragma once//防止头文件重复包含
#include <iostream>
using namespace std;class Point {
public:void setX(int x);int getX();void setY(int y);int getY();
private:int m_X;int m_Y;
};

point.cpp

#include "point.h"void Point:: setX(int x) {m_X = x;
}
int Point:: getX() {return m_X;
}void Point:: setY(int y) {m_Y = y;
}
int Point:: getY() {return m_Y;
}

circle.h

#pragma once
#include <iostream>
using namespace std;
#include "point.h"class Circle {public:void setR(int r);int getR();void setCenter(Point center);Point getCenter();private:int m_R;Point m_Center;//圆心
};

circle.cpp

#include "circle.h"void Circle:: setR(int r) {m_R = r;}int Circle:: getR() {return m_R;}void Circle:: setCenter(Point center) {m_Center = center;}Point Circle:: getCenter() {return m_Center;}

面向对象.cpp

#include <iostream>
using namespace std;
#include <string>
#include "point.h"
#include "circle.h"//class Point {
//public:
//	void setX(int x) {
//		m_X = x;
//	}
//	int getX() {
//		return m_X;
//	}
//
//	void setY(int y) {
//		m_Y = y;
//	}
//	int getY() {
//		return m_Y;
//	}
//
//private:
//	int m_X;
//	int m_Y;
//};//class Circle {
//
//public:
//	void setR(int r) {
//		m_R = r;
//	}
//	int getR() {
//		return m_R;
//	}
//
//	void setCenter(Point center) {
//		m_Center = center;
//	}
//	Point getCenter() {
//		return m_Center;
//	}
//
//private:
//	int m_R;
//
//	Point m_Center;//圆心
//};void isInCircle(Circle& c, Point& p) {//计算两点之间距离 平方int distance =(c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +(c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());//计算半径的平方int rDistance = c.getR() * c.getR();//判断关系if (distance == rDistance) {cout << "点在圆上" << endl;}else if (distance > rDistance) {cout << "点在圆外" << endl;}else {cout << "点在圆内" << endl;}
}int main(){//创建圆Circle c;c.setR(10);Point center;center.setX(10);center.setY(0);c.setCenter(center);//创建点Point p;p.setX(10);p.setY(10);//判断关系isInCircle(c, p);system("pause");return 0;
}

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

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

相关文章

QT day1登录界面设计

要设计如下图片&#xff1a; 代码如下&#xff1a; main.cpp widget.h widget.cpp 运行效果&#xff1a; 2&#xff0c;思维导图

DEAP库文档教程四——操作与算法

本节将将在初始化的基础上&#xff0c;进一步说明操作与算法。 1、Using the Toolbox toolbox(base.Toolbox())是包含所有进化操作的工具箱&#xff0c;从目标初始化到适应度计算。它允许在每个算法中实现简单的构造。toolbox基本上由两种方法组成&#xff0c;register()和un…

Linux和Windows下防火墙、端口和进程相关命令

&#x1f680;1 防火墙 1.1 firewall systemctl stop firewalld.service # 关闭防火墙 systemctl start firewalld.service # 开启防火墙 systemctl restart firewalld.service # 重启防火墙 systemctl status firewalld.service # 防火墙状态 firewall-cmd --reload # 重…

一些自己整理的工具实用参数

工具实用参数 sqlmap -u: 指定需要测试的目标URL&#xff08;格式&#xff1a;http://www.example.com/test.php?id1&#xff09; --cookie: 设置需要发送的 HTTP Cookie&#xff0c;例如&#xff1a;--cookie"sid123456;PHPSESSID654321" --threads&#xff1a;…

Shell脚本练习——系统应用相关

显示系统信息 [rootwenzi data]#cat systemInfo.sh #/bin/bash RED"\E[1;31m" GREEN"\E[1;32m" END"\E[0m" echo -e "$GREEN----------------------Host systeminfo--------------------$END" echo -e "HOSTNAME: $REDho…

Glide的使用及源码分析

前言 依赖 implementation com.github.bumptech.glide:glide:4.16.0 github: GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 基本使用 //加载url Glide.with(this) .load(url) .placeholder(R.drawable.placehol…

Springboot - 4.ApplicationContext

✍1. ApplicationContext&#xff1a; 当在Spring Boot中使用ApplicationContext时&#xff0c;您可以遵循以下详细示例来了解每个概念和用法&#xff0c;同时考虑了Spring Boot的自动配置和便利性&#xff1a; &#x1f3b7;1. ApplicationContext接口&#xff1a; Applica…

读word模板批量生成制式文件

文章目录 1、Maven依赖2、.docx或.doc格式的word模板准备3、读word模板&#xff0c;批量替换代码域&#xff0c;生成文件&#xff0c;demo4、结果展示 1、Maven依赖 <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagre…

Cargo 静态编译

git clone --recursive https://github.com/kornelski/pngquant.git vi ~/.cargo/config.toml[http] debug true proxy "127.0.0.1:1080" 1.apt 更新 2.apt install cargo 3.修改源码的Cargo.toml [source.crates-io] #registry "https://code.aliyun.com…

一键替换工程文件和场景中的UI对象字体

具体流程&#xff1a; 找到工程中使用到的所有字体找到工程和场景中包含Text的所有对象展示要替换的字体名字让用户选择通过用户选择的字体&#xff0c;展示响应的物体对象一键替换 通过AssetDatabase.FindAssets找到工程中包含的所有字体&#xff1a; private List<strin…

nnUNet v2数据准备及格式转换 (二)

如果你曾经使用过nnUNet V1&#xff0c;那你一定明白数据集的命名是有严格要求的&#xff0c;必须按照特定的格式来进行命名才能正常使用。 这一节的学习需要有数据&#xff0c;如果你有自己的数据&#xff0c;可以拿自己的数据来实验&#xff0c;如果没有&#xff0c;可以用十…

ASP.NET Core 中的 静态文件

Static Files Static Files 包括 HTML&#xff0c;CSS&#xff0c;图片&#xff0c;JavaScript&#xff0c;以及其他静态资源文件。 即网站本身的内容。 Static Files 服务 Static Files 保存在项目的 Web Root 目录&#xff0c;即 wwwroot 文件夹中。 而wwwroot目录是Conte…

两个pdf文件合并为一个怎么操作?分享pdf合并操作步骤

不管是初入职场的小白&#xff0c;还是久经职场的高手&#xff0c;都必须深入了解pdf&#xff0c;特别是关于pdf的各种操作&#xff0c;如编辑、合并、压缩等操作&#xff0c;其中合并是这么多操作里面必需懂的技能之一&#xff0c;但是很多人还是不知道两个pdf文件合并为一个怎…

jenkins+ssh+Putty构建windows的IIS服务发布

使用JenkinssshPutty发布windows IIS服务 下面是使用Jenkins、SSH和PuTTY实现Windows IIS服务发布的步骤&#xff1a; 在构建服务器上安装Windows SSH服务、PuTTY和7-Zip软件。在部署服务器上也安装Windows SSH服务和7-Zip软件。在构建服务器上使用批处理命令执行编译&#x…

ChatGPT⼊门到精通(4):ChatGPT 为何⽜逼

⼀、通⽤型AI 在我们原始的幻想⾥&#xff0c;AI是基于对海量数据的学习&#xff0c;锻炼出⼀个⽆所不知⽆所不能的模 型&#xff0c;并借助计算机的优势&#xff08;计算速度、并发可能&#xff09;等碾压⼈类。 但我们⽬前的AI&#xff0c;不管是AlphaGo还是图像识别算法&am…

组件化开发之如何封装组件-react

组件化开发之如何封装组件-react 什么是组件为什么需要封装组件组件的分类函数组件&#xff08;Functional Components&#xff09;&#xff1a;展示型组件&#xff1a;容器型组件&#xff1a;知道组件分类的意义是&#xff1f; 如何拆分组件&#xff0c;需要遵循什么原则1.保证…

解决Debian系统通过cifs挂载smb后,中文目录乱码问题

解决Debian系统通过cifs挂载smb后&#xff0c;中文目录乱码问题 //$smb_server/share /mnt/nas_share cifs credentials/root/.smbcredentials,iocharsetutf8 0 0默认通过以上命令挂载smb&#xff0c;但是在查看文件目录时&#xff0c;中文乱码 解决问题方式&#xff1a; de…

MR混合现实汽车维修情景实训教学演示

MR混合现实技术应用于汽车维修课堂中&#xff0c;能够赋予学生更加真实&#xff0c;逼真地学习环境&#xff0c;让学生在情景体验中不断提高自己的专业能力。 MR混合现实汽车维修情景实训教学演示具体体现在&#xff1a; 1. 虚拟维修指导&#xff1a;利用MR技术&#xff0c;可…

企业架构LNMP学习笔记9

nginx配置文件定义php-fpm服务&#xff1a; 编写测试文件&#xff1a; vim /usr/local/nginx/html/index.php 内容&#xff1a; <?phpphpinfo(); 在nginx的配置文件中配置&#xff1a; 修改配置文件&#xff0c;告知nginx如果收到.php结尾的请求&#xff0c;交由给php-…

【数据结构篇】线性表1 --- 顺序表、链表 (万字详解!!)

前言&#xff1a;这篇博客我们重点讲 线性表中的顺序表、链表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列... 线性表在逻辑上是…