永发信息网

C++面向对象程序中,既然类外私有变量的使用受限制,为何不都定义为公共变量,省的使用私有变量时那么麻烦

答案:2  悬赏:80  手机版
解决时间 2021-01-02 22:16
C++面向对象程序中,既然类外私有变量的使用受限制,为何不都定义为公共变量,省的使用私有变量时那么麻烦
最佳答案
举个例子给你说明吧,比如现在你要做一个具有计算球的体积功能的类。
假如这个类我们已经写好了,它名为VClass。
那么我们现在要计算体积了
VClass VmyClass;//对象实力
float banjin = 2;//半径
VmyClass.SetBanJin(banjin);//调用类初始化半径
float Tiji = VmyClass.GetTiji();//得出该半径求的体积
前面调用到的两个函数,应该都必须是public的,因为别人要调用这两个函数去得到自己想要的体积。VClass类里面应该还有很多成员,打个比方吧,假如它有一个成员:float PI=3.141592653;请问我该把这个成员设成私有的还是公共的呢?答案肯定是私有的,因为这样更安全。如果设成公共的,那么我们在别的类里面就可以像这样调用 VmyClass.PI = 1;设想一下PI的值被随意改变后,VClass里面计算球面积的函数肯定会用到这个PI,那么计算出的结果,也就是球的体积肯定就有错误了对吧。这就是一个最简单的私有成员安全性。往往我们实际写代码的过程中函数很多,成员很多,务必要把公共和私有分清楚。要不然很容易造成这样的错误
全部回答
这个和变量私有与否没关系,你如果仔细看错误提示的话,它会提示不能调用非const成员函数。 void setfunc(const constructfunc & a){j=a.getfunc();} 你这里传进来的参数a是const的,这样只能调用a的const成员函数。 解决办法很简单,将: int getfunc(){return j;} 改为 int getfunc() const {return j;} 即可。 至于拷贝构造函数为什么能访问另一个对象的私有变量,这是因为另一个对象也和自己是同一个类型的,一个类是自己的友元。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
建筑项目经理执照被盗用怎么办盗用人承担什么
单选题下列加粗字语境义完全一致的一组是A.轻
下列四个正多边形中,既是轴对称图形又是中心
从东营到淄博坐汽车多长时间到
怎么数钱才数得快
“不对,这不是将军家里的狗……”巡警深思地
先成家后立业,还是先立业后成家好,先行谢过
白领们都喜欢吃什么
单选题下列生活中常见物质的主要成分,属于盐
黑豆芽苗怎么食用好?
南宁宾阳宾高怎样?
如图A是某生态系统的食物网简图,图B为四种生
婚前协议书没有公证,有效吗?
积淀,成就人生的高度阅读答案
带狂和暴的四字词语有
推荐资讯
如图的四个图象中,不表示某一函数图象的是A.
单选题Thereason________heboughtanewTVi
月经吃了天麻会怎样
我车子是安徽的,在江西永丰县有违章,在江西万
单选题We’llgototheSummerPalace______
碧海社区居委会办公地址在什么地方?我要处理
你的眼泪 与我无关
有没有释放手机空间的好软件推荐的?
单选题据新华社2006年12月1日报道:放射性物
怎么用复印机扫描文件到电脑
那曲地区体育局地址有知道的么?有点事想过去
一条说说引起一个千人群爆满,这是要逆天?我
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?