外行又看不懂
给人源码内行一看就懂
难道私有就是为了在几个人集体做某个项目时不给其他程序员看见??
如果做成dll 后破解,是否公有部分的函数更容易被发现?
两个问题,xiezi
谢谢
既然需要为私有数据成员赋值,还弄个公有函数来调用赋值,这不是多此一举吗?
类内的变量,即使是公有,不用对象调用也不会与其他类、函数等变量相混淆,一个程序不论多大,只要一个人写的,他总能知道自己的程序是在做什么吧?
难道不是为了防人吗?
在一般情况下,我们可以将类的数据成员设置为私有的,然后调用类中的公共该接口函数来访问他们。这样做的好处是将数据的赋值与读取分开操作,赋值函数不需要考虑读取函数是如何工作的,读取函数中的代码改变也不会影响到相应的赋值函数。那么这样就提高了代码的可重用性。另外,由于将数据成员进行了私有化,那么各个对象不可以直接访问并修改数据。想要直接修改私有成员变量的数值就是不合法的,只有通过公共的接口函数才能访问并且修改到类里面的私有数据成员。
这样的设置时程序更容易维护,并且可避免一些不应有的错误。
一个程序不可能只像你开始学习时候的那样只有几百行之类的,后期制作的程序动辄都是以万行为单位算的,写成私有与公有区别防止别人只是很简单的一部分,防止别人的话只用C的代码就能实现,关键还是为了防止自己,以及程序的层次性,代码的可重用性等等。
真纠结,或许阅历可以改变我的看法。
我依然认为,既然用公有函数赋值,还不如直接赋值。取值也得用函数取,多此一举。
一个私有x,复制还得这个公有setx()。。。到底有什么意义。
犯错是人为的,不应该由程序来修正啊,不是说类是为了封装,隐藏吗,封装我能理解,隐藏我就想不到隐藏的意义。
犯错是人为的,但是你能保证人为在几万或者几十万行代码时候都不会犯这个错误么?你开发这个软件的时间不是一天或则两天,一两个月都会很短的时间。
而且用函数来给变量赋值还有多种好处,比如检查是否越界,是否符合要求,给一些特别的变量赋值时候,比如给字符串赋值,直接赋值就很麻烦,如果在函数操作里面赋值的话,你调用起来就相对很简单,毕竟你写的是一个程序,定义只需要一次就行了,但是调用可能会有很多次,你不能再每次调用时候都判定这些是否符合要求,是否可以很简单的赋值等等。
你可以再看一下我的评论。
你说的这个例子有道理,不过程序员既然知道那个成员变量是保存面积值的,他还误用,这不是他犯得错误吗?如果怕别人用,那还不就是为了防人
追答你说的也是很有道理的
C++的私有类完全是多余的
只能约束编程者
看源码的确防不了,我也说了,内行一看就懂,外行看也白看。
如果为了防止其他函数无意修改,那证明这个人写的有问题啊,这是他犯得错误。
不是说私有是为了封装和隐藏数据嘛,怎么能为了防错呢。这也是我好奇的既然不防人,为什么要隐藏数据?
你不弄成私有的人家直接对象名.xx就可以修改了,如果通过接口函数,接口函数是你自己写的,比如对象名.get(),人家只是可以在你允许的范围内读这个私有成员,不能修改,或者你连这种可以访问私有的接口函数都不给,别人就无法访问了
追问有点道理,不过像一些只是保存数据的成员变量适合设置私有,防止别人用错(我还是觉得这是人为错误,程序是人写的,怎么用,怎么写,由人决定,误用就是犯得错误,不需要程序修正,需要人的认识。)
像那些用于为私有成员设置值的公有函数,我认为就是多此一举。
呵呵,我也是刚学C++,没啥项目经验,对此没啥深入理解,等你做项目时,你就应该能体会到私有的作用了
既然是为了项目之间相互开放需要知道的接口,那不就是为了防人吗?
追答我这里的项目是指C++中的工程。