举例分析private的作用【c/c++学习】

C/C++:混肴点分析 本文系统介绍了C++中的多种常量类型及其特性:1. 字面常量:直接出现在代码中的固定值,如10、3.14、'A'等,具有类型但无地址;特别分析了字符常量与单字符字符串的存储差异(1字节 vs n+1字节)和使用区别。2. 符号常量:通过#define(无类型检查)或const(类型安全)定义的命名常量,详细对比了两种方式的实现原理及C/C++中const的不同处理机制。3. 临时变量:深入剖析了函数返回值、类型转换、const引用等场景下临时变量的生成机制及其常性特征。4. 补充说明了输入缓冲区处理中回车符 阅读详情

抛砖引玉:

 1 /*c++中private的用处*/
 2 /*我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用。*/
 3 class fun{
 4 public:
 5     void setname(string x)
 6 {
 7     name =x; 
 8 }
 9 string getname()
10 { 
11     return name;
12 }
13 private:
14     string name;
15 };
16 /*主函数*/
17 int main()
18 {
19 fun ob; 
20 ob.setname("you are apples"); 
21 cout << ob.getname() <<endl;
22 
23 system("pause");
24 return 0;
25 }

作用说明:

【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++的人会很迷惑,因为你用不到,而且还麻烦,不如公有的方便。
但是大工程上是避免出错的好方法。因为你写了一个软件,跟第三方合作开发,计算工资的部分你这里把关,可是第三方的人如果可以操作你内部数据,他直接修改了工资的值,你就亏了,所以你要把工资这个变量设为私有的,这样第三方的人就不能直接修改你的值了。

macOS 14 配置 VSCode C/C++ 开发环境:从 Code Runner 到完整调试的 5 步优化 本文详细介绍了在macOS 14系统上配置VSCode C/C++开发环境的完整流程,从基础工具安装到高级调试技巧。通过5步优化,包括环境准备、扩展配置、项目结构设置、高级调试配置和性能优化,帮助开发者建立高效的C/C++开发工作流,特别适合Mac平台上的VSCode用户。 阅读详情

相关推荐

别再死记硬背了!用Python可视化带你直观理解柯西收敛定理(附NumPy代码)

本文通过Python可视化技术,结合NumPy和Matplotlib,直观展示柯西收敛定理的动态过程。文章提供了完整的代码实现,帮助读者从抽象数学定义过渡到具象理解,特别适合数学学习者和Python开发者。通过热力图和交互式参数探索,读者可以清晰观察数列收敛特性,提升数学分析的学习效率。

weixin_28465009的博客 185

C++中的private, public, protected

Private, Public, and Protected in C++

scott198512的博客 1万+

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当数据不满足正态分布假设时,该非参数检验是传统双因素方差分析的有效替代方案。文章从原理、R环境配置、数据准备、代码实现、结果解读到事后比较与可视化,提供了完整的实战指南,帮助研究者稳健地分析多因素实验设计中的主效应和交互效应。

cc789的博客 406

private关键字的作用及使用

一、使用private关键字可以将需要保护的成员变量进行修饰 二、一旦使用了private进行修饰,那么本类当中仍然可以随意访问,但是超出本类范围外的就不能再直接访问了 (private int age超出int范围就不能访问了) 三、间接访问private成员变量,就是定义一对儿getter/setter方法,命名规则getXxx/setXxx 对于基本类型中的Boolean值,getter方法一定要写成isXxx的形式而setterXxx规则不变 举例: ...

weixin_58201297的博客 5662

基于 openEuler 24.03 LTS 源码编译安装 Zabbix 7.4

Zabbix是一款开源的企业级分布式监控系统,支持网络、服务器、应用等多种IT资源的监控。核心功能包括数据采集、告警通知、可视化展示等,采用Server/Agent架构,支持多种操作系统。本文详细介绍了在openEuler 24.03系统上部署Zabbix 7.4.2的完整流程,包括环境准备、MySQL配置、PHP/Apache安装、Zabbix编译安装等步骤,为构建企业级监控系统提供了实践指导。

广然笔记 1191

海思方案定制hi3531dv200/SS528 DVR方案解析:从硬件选型到编解码实战应用

海思方案,Hi3518EV100,Hi3518CV100,Hi3515CV100,Hi3516CV100,Hi3516ECV100,Hi3516D,Hi3516A,Hi3519,Hi3520D,Hi3521A,Hi3535,Hi3531,Hi3536,Hi3536C,Hi3536D,Hi3518EV200,Hi3518EV201,Hi3520DV200,Hi3516CV200,Hi3516CV300,Hi3516AV200,Hi3520DV300,Hi3519V101,sd3403,hi3519av200

1585

C++任意使用private类型数据成员巧妙方法

本文介绍一种在对象的使用中突破private类型使用限制的方法

zhaoweiyanzwy的博客 2228

SAP BOM批量反查代码分享

SAP BOM反查批量查询代码分享

我小时候很黑的博客 4972

C++中构造函数或析构函数定义为private

C++中构造函数或析构函数定义为private

xxxtlxxx的博客 2937

【VxWorks】Vxworks、QNX、Xenomai、Intime、Sylixos、Ucos等实时操作系统的性能特点

VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统,是嵌入式开发环境的关键组成部分。其内核支持多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度)、任务间的同步、进程间通信机制、中断处理、定时器和内存管理机制等,且提供了一个快速灵活的与 ANSIC 兼容的 I/O 系统,网络支持 对其它VxWorks系统和TCP/IP网络系统的"透明"访问。具有良好的持续发展能力、良好的可靠性、卓越的实时性和高性能的内核以及友好的用户开发环境。

smartvxworks的博客 1065

Error: Flash Download failed - Target DLL has been cancelled

由于换了新电脑,keil重装了下,然而之前的MCU的支持包没有安装,以及一些其他的问题,导致可以编译但是不能将程序烧录到单片机中。现整理一下解决思路: 1、将支持包下载并添加: 找到你需要用的MCU的具体型号: 例如: 点击网址,下载安装包,或者在csdn等其他网址下载安装包,将下载好的pack包放到keil5的安装目录下的.Download中: 点击file中的import,将路径选择到.........

hanhan的博客 5万+

C++三种类的成员访问修饰符public(公共)、protected(受保护)、private(私有)

C++ public(公共)、protected(受保护)、private(私有)

m0_67824976的博客 5525

OpenStack ussuri 私有云平台搭建企业级实战

openstack是一个云操作系统,这个操作系统控制着数据中心中的计算,存储和网络资源。所有这些资源的管理都是通过API来来实现的,并且管理资源都有相应的认证机制。在openstack中有一个叫做dashboard的仪表盘,这个仪表盘通过web界面可以管理这些在DC中的资源。除了能提供IaaS功能外,你还可以使用orchestration,错误管理和服务管理等服务来确保应用的高可用性。

悦分享 2339

c 语言private用法,举例分析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;};/*主函数...

weixin_39910523的博客 6365

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c语言private函数,举例分析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;};/*主函数...

weixin_39608748的博客 2062

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C/C++基础知识点面试题

目录 一、虚函数的数据结构,如何工作? 二、const与define的区别? 三、指针与引用的区别? 四、指针与数据的区别? 五、不用临时变量实现两个变量的交换 七、一个C++源文件从文本到可执行文件经历的过程 八、C++11新特性 九、C++和C的不同 十、malloc的原理 十一、内存泄漏、野指针 十二、static 十三、union和struct 十四、new与ma...

找个特立不独行的名的博客 2万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

c语言private用法,深入理解C++中public、protected及private用法

初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。这里我们首先要明白下面几点。1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问p...

weixin_39582724的博客 4736

C/C++编程笔记:访问修饰符丨Public、Private和Protected

访问修饰符用于实现称为数据隐藏的面向对象编程的重要方面。考虑一个真实的例子: 拥有10名核心成员的研究与分析部门(R&AW)拥有有关国家安全的敏感机密信息。现在,我们可以将这些核心成员核心化为类的数据成员或成员函数,而这些成员又可以与R&A部门相关联。这10个成员可以直接从其所属部门(班级)访问机密信息,但是除这10个成员之外,任何人都不能直接访问此信息,即,除班级中普遍存在的那些外部功能外,其他人不能访问未授权的信息。既不具有分配的特权(例如,朋友类和继承的类所拥有的特权,如以后将在本文中看到的那样).

致力于C语言C++知识分享! 1096

static存储类说明符、cpp的private变量 的关系

C语言的static存储说明符与C++的private关键字在封装思想上有联系,但实现机制不同。C语言的static通过内部链接实现文件级别的私有化,限制其他源文件访问;而C++的private则实现类级别的封装,限制非成员函数访问。技术上,static作用于链接期,控制符号可见性;private作用于编译期,进行语法检查。现代C++更推荐使用匿名命名空间替代static的文件作用域。两者都体现了信息隐藏的编程理念,但分别适用于过程式和面向对象的不同编程范式。

jimy1的博客 499

C++中public、private、protected的区别

初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。 这里我们首先要明白下面几点。 1.类的一个特征就是封装,public和private作用就是实现这一目的。所以: 用

2162

【C/C++】详解 类和对象的概念、基本用法

C++ 是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计。 在C语言中,程序一般是由数据和算法组成,数据和算法彼此独立,关联性不强; 而在C++中将相互关联数据和算法封装起来,形成结构体或类,无论类还是结构体都是一个抽象的概念 只有定义类的变量时,数据才会真实存在,这个变量我们称之为对象

努力让自己的能力配得上梦想. 7556

深入理解C++中public、protected及private用法

初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。 这里我们首先要明白下面几点。 1.类的一个特征就是封装,public和private作用就是实现这一目的。所以: 用

Armypopy的博客 5851

C++ private

 其实,按   private   的作用,面向对象的语言可以大致分两类:     一类以类为访问界限,如   C++,同一类的不同对象可以互相访问   private   成员     另一类以对象为访问界限,如   smalltalk,一个对象的   private   成员只有该对象自身才能访问,不同对象,即使同一类,也不能访问。         或者说,C++   更像“面向类”的语言,而

雪候鸟的专栏 3171

c语言中的protect_深入理解C++中public、protected及private用法

初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。这里我们首先要明白下面几点。1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问p...

weixin_39586683的博客 1130
上一篇: Ubuntu 18.04中的Vim编辑器的高级配置【教程】
下一篇: 用两个栈实现队列功能【剑指offer】
蓝莓派Alex
博客等级 码龄15年 147粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值