搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
Gausst松鼠会
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+图像缩放,提供3套工程源码和技术支持
2
GIT分支合并命令之git-merge_git merge no-commit
3
构建面向异构算力的边缘计算云平台_边缘异构计算
4
git拉取远程分支代码,提交代码日常用指令,merge合并分支_git 拉取仓库分支代码
5
windows下powershell与linux下bash美化教程(使用starship)
6
中文核心论文实战:基于通道注意力cbam+lstm的工业用电功率预测时间序列_基于cbam通道注意力的工业用电量预测
7
华为鸿蒙系统操作教程_华为鸿蒙系统开发者工具DevEco Studio安装图文教程
8
RAM、ROM、FLASH的存储原理及区别
9
Unity2019通过unity获取Android动态权限(不用在Android写插件)_unity permission
10
Flutter中的widget(组件)_flutter widget
当前位置:
article
> 正文
类中的封装_类中封装的什么东西
作者:Gausst松鼠会 | 2024-04-09 12:10:21
赞
踩
类中封装的什么东西
类通常分为以下两个部分:
类的实现细节;
类的使用方式;
当使用类时,不需要关心其实现细节;
当创建一个类时,才需要考虑其内部实现细节;
封
装的基本概念:
根据日常生活中的经验:
并不是类的每个属性都是对外公开的
如:女孩子不希望外人知道自己的年龄和身高;
如:一些男孩子不希望别人知道自己会尿床;
而一些类的属性是对外公开的
如:人类的姓名,学历,国籍等;
因此
,需
要
在类的
表示法中定义属性和行为的公开级别
类似文件系统中文件的权限;
C++中类的封装:
成
员变量
C++
中用于表示类属性的变量;
成
员函数
C++
中用于表示类行为的函数;
在
C++
中可以给成员变量和成员函数定义访问级别
public
成员变量和成员函数可以在类的内部和外界访问和调用;
private
成
员变量和成员函数只能在类的内部被访问和调用;
类成员的作用域:
类成员的作用域都只在类的内部,外部无法直接访问
成
员函数可以直接访问成员变量和调用其它成员函数;
类的外部可以通过类变量访问
public
成员
类成员的作用域与
访
问级别没有关系;
C++
中用
struct
定义的类的所有成员默认为
public
类的真正形态:
struct
在
C
语言中已经有了自己的含义,只能继续兼容;
在
C++
中提供了新的关键字
class
用于类定义;
class
和
struct
的用法是完全相同的;
在用
struct
定义类时,所有成员的默认属性为
public
在用
class
定义类时,所有成员的默认属性为
private
一
个运算类的实现:
#ifndef _OPERATOR_H_
#define _OPERATOR_H_
class Operator
{
private:
char mOp;
double mP1;
double mP2;
public:
bool setOperator(char op);
void setParameter(double p1, double p2);
bool result(double& r);
};
#endif
#include "Operator.h"
bool Operator::setOperator(char op)
{
bool ret = false;
if( (op == '+') || (op == '-') || (op == '*') || (op == '/') )
{
ret = true;
mOp = op;
}
else
{
mOp = '\0';
}
return ret;
}
void Operator::setParameter(double p1, double p2)
{
mP1 = p1;
mP2 = p2;
}
bool Operator::result(double& r)
{
bool ret = true;
switch( mOp )
{
case '/':
if( (-0.000000001 < mP2) && (mP2 < 0.000000001) )
{
ret = false;
}
else
{
r = mP1 / mP2;
}
break;
case '+':
r = mP1 + mP2;
break;
case '*':
r = mP1 * mP2;
break;
case '-':
r = mP1 - mP2;
break;
default:
ret = false;
break;
}
return ret;
}
#include <stdio.h>
#include "Operator.h"
int main(int argc, char *argv[])
{
Operator op;
double r = 0;
op.setOperator('/');
op.setParameter(8, 4);
if( op.result(r) )
{
printf("Result is %f\n", r);
}
printf("Press any key to continue...");
getchar();
return 0;
}
类的精华在于封装
将实现细节和使用方式相分离;
C++
中通过
public
和
private
实现类的封装
public
成员可以通过变量被外界访问;
private
成员只能够在类内部使用;
类的定义和实现可以分开到不同的文件中
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/392695
推荐阅读
article
【C/C++】
define
的
用法(高级用法)_
c
语言
define
定义
的
变量
可以参加
运算
嘛?...
c
语言
的
define
语句虽然看起来很简单,大部分
的
时候都只是给某个
变量
或者函数加上一个别名或者进行简单
的
运算
,但 d...
赞
踩
article
常见
排序
算法_将
键值
较大
的
记录
向
序列
的
尾部
移动
,
键值
较小
的
记录
向
序列
的
前部
移动
的
排序
方...
排序
的
概念及其运用
排序
:所谓
排序
,就是使一串
记录
,按照其中
的
某个或某些关键字
的
大小,递增或递减
的
排列起来
的
操作。 稳定性...
赞
踩
article
MyBatis
-
Plus
如何实现
连表
查询_
mybatis
plus
连表
...
mybatis
-
plus
-joingiteegithub使用方法安装在项目中添加依赖
[详细]
-->
赞
踩
article
java
从未
导入
_
如果
您
从未
依赖
在线
销售,
如何
优化您的
网站
...
java
从未
导入 初学者指南 (A beginner’s guide)If you own a small busin...
赞
踩
article
基于vue和
springboot
的线上
日用品
商城
的
设计
和实现-
计算机
毕业
设计
源码30243...
本系统采用Java技术,Mysql数据库开发,充分保证了系统稳定性、完整性。 线上
日用品
商城
的
设计
思想如下: 1、操作简...
赞
踩
article
Ubuntu
怎么
查看
电脑配置
(
ubuntu
怎么
查看
系统配置)_
ubuntu
查看
电脑配置
...
既然选择用
Ubuntu
就不要害怕Bug,06年刚用
Ubuntu
的时候光安装配置我就逛了几天的论坛,现在用的11.10基...
赞
踩
article
用
TensorBoard
可视化
PyTorch
...
要将
PyTorch
与
TensorBoard
结合起来,可以使用`tensorboardX`库,这是一个提供了与Tensor...
赞
踩
article
RabbitMQ
—性能
测试
_
rabbitmq
性能
测试
...
线上环境出现问题,由于某数据上报接口的大量请求,导致
rabbitmq
的消息队列中Ready消息超过300W条,rabbi...
赞
踩
article
常见
内
网
穿透
工具
(非常详细)从零
基础
入门
到精通
,
看完这一篇就够了...
本文以渗透的视角
,
总结几种个人常用的
内
网
穿透
,
内
网
代理
工具
,
介绍其简单原理和使用方法。_
内
网
穿透
内
网
穿透
...
赞
踩
article
java
调用
power
shell
_
PowerShell
中
调用
外部程序和
进程
操作命令例子...
学习
PowerShell
,我们不指望通过C#编程去搞定所有事情,我们应该记住cmd.exe或者说批处理给我们留下的宝贵财...
赞
踩
article
基于
Python
的海量
豆瓣
电影
、
数据
获取、
数据
预处理
、
数据
分析
、可视化、大屏设计项目(含
数据
库)_电...
有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主!!!!!!!!!!本文基于
Python
的网络爬虫手段对豆...
赞
踩
article
抖音
SEO
矩阵
系统
源码
开发
部署(二)技术搭建+二次
开发
_
抖音
矩阵
系统
源码
部署...
是一项技术密集型工作,需要对大数据处理、人工智能等领域有深入了解。该
系统
开发
过程中需要用到多种编程语言,如Java、Py...
赞
踩
article
m>ar
m
v8
m>-
M
(
m>cortex
m>-
m
)
m>Trustzone
m>总结和介绍...
1、AR
M
V8-
M
m>Trustzone
m>简介TrustZone 技术的概念并不新鲜。该技术已在 Ar
m
Cortex-A ...
赞
踩
article
Elasticsearch
索引
之
嵌套
类型
:深度剖析与实战
应用
...
在
Elasticsearch
的实际
应用
中,
嵌套
文档是一个常见的需求,尤其是当我们需要对对象数组进行独立
索引
和查询时。在E...
赞
踩
article
阿里云物
联网
平台
数据
上传至阿里云
RDS
MySQL
云
数据
库
_阿里云物
联网
平台
数据
如何接入rds
数据
库
...
答主最近毕设需要,在此梳理下流程(已免费试用/购买物
联网
平台实例和
RDS
MySQL
数据
库
)一、阿里云物
联网
平台端1、创...
赞
踩
article
linux
-
glibc
2.12
升级
_
glibc
-
2.12
...
参考文章:https://blog.csdn.net/nw_nw_nw/article/details/72542179...
赞
踩
article
RabbitMQ
的
性能
优化
和
调优
_
rabbitmq
性能
问题及
调优
...
本章介绍了一些常用的
RabbitMQ
性能
优化
和
调优
方法,包括消息持久化、批量确认、持久化连接、集群和负载均衡等。通过使用...
赞
踩
article
Axure
RP9
制作
圆环
动态
加载
进度条
_
axure
加载
圆圈组件...
利用
Axure
rp9,
制作
动态
加载
的
圆环
形
进度条
。在
制作
的过程中,实现了
圆环
图形的
制作
方法,半
圆环
图形的
制作
方法,
圆环
...
赞
踩
article
vite
项目中
vue
-
i18n
国际化
与
Element
-
Plus
自动导入结合实现_
vite
st引入国际...
本文是基于之前写的集成系统教程而来,后期在项目实践。_
vite
st引入
国际化
vite
st引入
国际化
...
赞
踩
article
element
-
plus
中的组件
国际化
_
element
plus
国际化
...
1.全局配置,在app.vue文件中,找到要
国际化
的组件。
_
element
plus
国际化
element
plus
国...
赞
踩
相关标签
c语言
c++
开发语言
java
服务器
前端
大数据
vue.js
spring boot
课程设计
flask
javascript
python
ubuntu
linux
运维
pytorch
人工智能
网络安全
网络
内网穿透
java 调用power shell
数据分析
数据库