没有合适的资源?快使用搜索试试~ 我知道了~
举例分析private的作用(c/c++学习)
1 下载量 148 浏览量
2020-12-17
02:08:24
上传
评论
收藏 55KB PDF 举报
温馨提示
试读
1页
c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用。 class fun{ public: void setname(string x) { name =x; } string getname() { return name; } private: string name; }; /*主函数*/ int main() { fun ob; ob.setname("you are apples"); cout << ob.getname() <
资源详情
资源评论
资源推荐
举例分析举例分析private的作用的作用(c/c++学习学习)
c++中中private的用处的用处
我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序
中,private有什么用。
class fun{
public:
void setname(string x)
{
name =x;
}
string getname()
{
return name;
}
private:
string name;
};
/*主函数*/
int main()
{
fun ob;
ob.setname("you are apples");
cout << ob.getname() <<endl;
system("pause");
return 0;
}
作用说明:作用说明:
【way 1】
这是面向对象编程中的东西。
首先你要有一个类的概念,如果没有类的概念,就不会知道为什么需要private、protected和public。
类首先是一种抽象,是一个定义。比如说人类就是一个抽象的定义,具体到我们每个人就是这个类的对象。虽然你我都属于人
类,但可能我们姓名不同,性别不同,年龄也不同,因此类需要有属性。除了属性,类还需要有方法,类的方法是这个类对外
所提供的交互接口。例如人类可以对外提供走路、说话、吃饭等方法。类的属性通常会声明为private,也就是私有的,然后提
供一个公有的方法来访问它。你不理解的其实就是这里,不知道为何要“多此一举”,直接将属性声明为public,直接访问不就
可以了吗?
其实,从程序编译的角度来讲这么做是没有问题的,只是,从面向对象的角度来讲,有三个重要的概念,分别是封装、继承和
多态。如果将类的属性直接以public的形式对外暴露,实际上就丧失了封装性。什么是封装?封装就是让内部细节对外不可
见。类的一个设计原则就是,不要把自己的内部实现细节对外暴露,只对外提供一个功能接口,也就是公有的方法,至于类这
个方法里面具体是怎么实现的,外部不需要知道也不应该知道。就以你代码里setname这个方法为例,一个完整的名字应该包
括姓和名。假如说你规定姓在前名在后,中间用一个空格来分割。那么如果使用setname方法,你就可以在setname时对外部
输入的名字进行检查,看看中间是不是有个空格,如果没有的话可能需要返回一个设置失败
。另外,类的内部,可能是使用一个string类型的变量name来直接保存姓和名,也可以定义2个string变量,一个用来保存姓一
个用来保存名,可以在setname方法中将用户的输入以空格拆开,分别填到这2个变量里。可见,就一个简单的setname,其
实你类的内部,可以用不同的方法来实现。但是这种实现的差异,对于类的使用者来说是不关系的,类的使用者只需要知道它
可以调用setname来设置名字就可以了,而无需关心你这个类里面究竟是用一个string对象还是两个string对象来保存名字。这
其实就是一个封装。如果你直接以public类型对外提供名字属性,你实际上就丧失了封装性,因为你把内部的实现细节暴露给
了外部。
相信,你应该明白了很多。
【【way 2】】
简单来说就是编写大工程的时候有用,刚学c++的人会很迷惑,因为你用不到,而且还麻烦,不如公有的方便。
但是大工程上是避免出错的好方法。因为你写了一个软件,跟第三方合作开发,计算工资的部分你这里把关,可是第三方的人
如果可以操作你内部数据,他直接修改了工资的值,你就亏了,所以你要把工资这个变量设为私有的,这样第三方的人就不能
直接修改你的值了。
weixin_38589812
- 粉丝: 4
- 资源: 921
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于区块链的数字版权管理的设计与实现+详细文档+全部资料(高分毕业设计).zip
- html+js+css实现简易计算器.rar
- 用python从excel读取数据并画图.zip
- 一个光立方项目,使用树莓派+74HC154芯片控制(20多种特效)
- 基于MATLAB口罩定位识别系统源码+GUI界面+详细文档+全部资料(高分项目).zip
- comfyui的电商工作流BrushNet-basic
- 基于pytorch+OpenCV的手写数字识别源码+使用文档+全部资料(优秀项目).zip
- 基于C++和Opencv的传统手势识别源码+使用文档+全部资料(优秀项目).zip
- 与我最爱的人度过的第二个情人节,花心思制作的一个网页送给她
- Python实战:高效读取Excel数据.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0