C++ 类的各种公开、私有、保护成员定义的实际意义?

作者&投稿:莫俗 (若有异议请与网页底部的电邮联系)
c++类中的私有成员变量有什么作用?~

私有成员变量,即定义在private区域的成员变量。
对于本类成员函数来说,该变量与其它成员变量并无区别。使用上和作用上也都相同。
对于通过对象访问,私有成员变量无法通过对象访问。通过这一方式可以起到保护一些数据不被随意修改的效果。
另外,在出现继承时,基类的私有成员变量不会被继承。
所以,如果存在想保护不被对象引用,或者不想被继承的成员变量,需要定义为私有。

等同于封装的意义:避免了随意性修改,而且由于一般是通过函数去访问,所以可以在函数内进行处理后返回一种值,比如时间实际上存储为一个整形值,但是你可能只关心second,或者只关心hour,或者希望是hh:mm:ss形式返回,那么你可以只改变函数,而不必重设计变量的情况,可以说是增加了利用率和弹性。好处应该还有其他的方面,建议去看看高手们的博客总结吧。

  C++的公有成员、私有成员、保护成员都属于语法范畴,它的作用主要是为了实现C++的面向对象与继承特性。

  1、公有成员是接口,打个比方来说,以计算机为例,对于不懂计算机的人来说,不需要告诉对方内部CPU如何动作、内存如何管理,只需要告诉它电源开关在哪里即可,这个电源开关就相当于公开成员,它是一个操作界面。C++面向对象程序设计的一个关键点即是接口编程。拿Windows来说,亦是如此,普通用户通过GUI接口即explorer.exe来完成操作,系统管理员通过控制台接口即cmd命令提示符来操作,程序员通过SDK中的API函数来完成操作。

  2、私有成员 ,这只是变换了一个名称,程序=数据结构+算法,算法是用来操作数据的,一个程序不可能是没有数据的,私有成员即是用户通过接口操作的对象。因此,一般私有成员都是数据成员,偶尔会有一些私有的成员函数,即不想开放给用户的接口。

  3、保护成员,C++一个很重要的特性是实现继承,也叫做派生,派生一词最早出现于亚理士多德的《工具论》,中国古代的诸子百家中有一家叫做名家,著名的白马非马的故事就是出自于此,派生的概念类似于马和白马的关系。用数学集合的观点来看,马是一个集合,白马是马的子集,派生实际上实现的就是这种子集关系,子类要继承基类的数据成员,就牵涉到一个数据共享的问题,因为继承的时候,基类的私有成员在派生类中依然是基类的私有成员,否则,私有成员就没有任何意义,基类的公有成员在派生类中依然是公有的,因此这里面有一个局限性,即如何让基类的成员,能成为派生类的私有成员,这样能够更好的实现基类的可扩展性,因此才引入了保护成员的概念。

这些东西都是为了避免犯错,而不是避免蓄意的阴谋。

类的各种公开、私有、保护是用来区分实现与接口部分(比较低层次的)。类的公有成员定义了类的功能(接口),这些接口定义了这个类能做什么,不能做什么,这个类因为这个接口而存在。而类的私有成员和保护成员定义了类的实现部分,这些实现部分可能因为性能、可靠性而经常改动。 通过在编程语言中区分出接口和实现,可以让程序员以最小的代价去修改代码,可以让用户在阅读我们的代码时知道应该关注那些东西而不应该关注那些东西,同时也让编译器能检查出用户代码非法使用类实现代码的情况。

这是为了避免犯错以及时代码清晰而已,你所的那个防人,现在的技术做不到。

C++的继承、静态多态(模板)和动态多态(virtual函数)则把接口与分离的原则发挥到了极致。

公开、私有、保护成员在编译前和编译后有什么区别?
没什么区别,public、private、protected限制的是名字使用而已,也就是说你也可以在代码中通过指针访问私有保护成员,但是如我前面说的:这些东西都是为了避免犯错,而不是避免蓄意的阴谋。

你说的那个隐藏细节的那个问题,有一些技术可以做到的,比如说使用句柄类技术,可以在类的声明中只保留一个成员指针,而所有的细节都隐藏在这个指针的后面。

定义一个私有数据,然后用一个公共的函数return到底有什么实际价值?
如果将来某一天你决定将这个变量换成其他的,那你就只需要修改那个return这个变量的函数就可以了。还有这种做法有助于排错的。

找一些国外的书看吧,现在有些书说得都很浅的,只是讲语法。

将一些操作写成函数形式是为了提供公共操作,可以简化代码,让程序步骤更清晰。
要访问一个私有数据成员,你当然可以把那个成员改成公有的,然后直接访问。但是如果这个类被继承的话,那就会出现问题了,因为这个被改成公有的数据成员也会被继承,这有时候会造成访问冲突,用私有来进行访问控制就可以解决这个问题。

有时候用函数的形式来访问数据,是一种习惯,这在编写复杂的程序的时候很有用。比如在你需要改程序的时候,你仅仅需要改这个函数的实现,而不用改函数名。

假如有一个函数是返回税率的,
get(){return ele}假设现在的税率是这个ele,直接保存在类内的

以后有一天,税率不是这个ele了,而是另一种计算方法了,
get(){return ele + a*20%+b;} 假设税率是这样算了,那么要改动的仅仅是get()函数里面的实现。

那么就算有多少个地方用到get()函数,都不用去修改。

但是,如果税率一开始你是用ele直接访问表示的。那么你就需要改动 所以需要用到ele的地方。这对一个复杂的程序来说,是很难的,而且非常容易出错。

封装啊少年...这些东西吧,做过实际项目就懂了。
私有啊,就是派生类里不能访问,外界也不能访问,只能是类内部调用啊。这样使用类起来就很简单啊,主要是处于项目维护的需要。经常性的,我做c++开发的时候,经常写一个基础类,里面有20-50多个成员函数,有一些类给是外面程序里使用的函数,我们给它做成public的,这样其他开发人员要使用我写的类,就直接看那些public的函数就行了,至于那些private的,直接不用看。你没写过几行代码。正在你做个小型项目,5K行-8K行代码的,你就体会到了。还有就是,private的其他意义在于,如果你继承了一个之前写的类,如果那个类里面所有函数都是public,然后你随意调用了里面的方法,然后呢,你发现一个函数需要改,然后你不得不去改所有调用了那个函数的代码,因为你所有函数都是public,派生类可以随意调用,这样基类和派生类直接的耦合性就太强了,这还算简单的,很多时候一个基类都派生出4-5个类,一个类代码量经常有个4K-5K多行的样子,这样该一个函数,所有的函数都要该,是个人都会崩溃的。所有,public和private还有protected实质还是类设计思想的规划。
至于你说的return,那个是叫做标准,也可以说是规范,没啥实际意义。要说实际意义嘛,你也可以不用C++,用纯C去写也没人管你,一个main函数写个几万行代码也行,这都随意。但是规范就说不要这样写,因为你写的太少了,不能体会到这样做的坏处,体会到了这样的坏处,就理解了规范的意义的。

谈谈我的看法,类是面向对象的基石,类说白了只是一种封装了数据和操作数据的容器而已它可以让我们设计程序相对于面向过程会更加简单抽象化,类里面设置的这些属性私有等不是用来防人的,只是为了在类的使用过程中减少出错。大型程序的代码量往往相当可观,我们使用类尤其是别人写的,我们其实更在意与类的接口怎么使用并不想知道内部的 实现机制,而且给你看你也不见的想看,就给我们电脑一样我们只是想拿来用它,但是我并不想知道它内部构造是怎么协同工作的,但是为了防止使用者破坏它,我给它加个机壳仅此而已


文成县17143603421: C++ 类的各种公开、私有、保护成员定义的实际意义? -
资娅西其: 这些东西都是为了避免犯错,而不是避免蓄意的阴谋.类的各种公开、私有、保护是用来区分实现与接口部分(比较低层次的).类的公有成员定义了类的功能(接口),这...

文成县17143603421: C++中,类的继承有哪些类型,其之间有什么区别? -
资娅西其: 一,C++中,类的常用的继承方式有三种,分别是:公有继承(public)、私有继承(private)、保护继承(protected); 二,三者之间的区别: 1,公有继承时,水平访问和垂直访问对基类中的公有成员不受限制; 2,私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问; 3,保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承; 4,对于基类中的私有成员,只能被基类中的成员函数和友元函数所访问,不能被其他的函数访问.

文成县17143603421: C++中的公有、私有、和保护成员之间的区别是什么 -
资娅西其: 公有成员:关键字public将类成员声明为公有成员,可以被类对象及其所有成员访问.私有成员:关键字private将类成员声明为私有成员,不能被类对象直接访问.保护成员:关键字protected修饰的成员声明为保护成员,不能被类对象直接访问.其访问权限与私有成员近似,所不同的是其可对于基类的派生类是可见的,而私有成员则不可见.

文成县17143603421: 类成员私有,公共,保护属性有什么不同
资娅西其: 简单理解 公有,你保管的大家的东西 私有,就是你的物品,谁都别碰 保护,就是你的物品,但除你的继承者外,谁都别碰 还有个东西叫友元(friend),就是你的死党,对他而言,你没有秘密,你的就是他的,呵呵.

文成县17143603421: (C++)公用,私有,保护三种继承方式(派生类)有何区别和联系?谁帮解释下,谢谢. -
资娅西其: 公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数).私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问.保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问

文成县17143603421: C++中的类为什么要设公有私有和保护三类,一种不行吗? -
资娅西其: 一个类中有方法有数据,有些数据只能给一部分人看却不能修改,有些却不能给人看,这就需要类的公开性了,public就公开了,所有方法都允许你使用,数据都可修改,有些就只能给用户查看的,就要写保护,比如你银行的账户余额,工作人员只能看不能该,有些就是只有自己看谁都不能看的,比如密码

文成县17143603421: C++类中可以包含公有、私有哪三种不同访问控制权的成员 -
资娅西其: 公有public,私有practive,受保护的protected,三种

文成县17143603421: 谁给详细解释一下C++中的类 -
资娅西其: 在面向对象的程序设计中,有经常接触类、对象等专业名词;到底什么是类、什么是对象呢?在程序又是怎样运用呢?类是面向对象程序设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,因为类是通过抽象数据类型的方法来...

文成县17143603421: 求高手帮助阐释一下c++中类 里面 public 和 private 的用法.也就是说这两个有什么用. -
资娅西其: private和public的作用是让编译器帮你检查某些模块是否使用了他没权限使用的模块,也就是生成可执行代码的时候做权限检查.比如,公司里各个部门有自己私有的信息,财务部可以看所有员工工资,而销售部不可以,普通员工也不可以.可...

文成县17143603421: C++中类的定义内部,private,protected,public的名称 -
资娅西其: 太知道你要问什么. Class Base { public://子类可见float fa;/所有人可见Base();~Base();protected:/ float fb;private:/

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网