c++类中的私有数据成员

classVector{private:doublea1,a2,a3;public:doublemagnitude(Vector);};doubleVector::mag... class Vector
{
private:
double a1,a2,a3;
public:
double magnitude(Vector);
};
double Vector::magnitude(Vector v2)
{
return(a1*v2_a1+a2*v2_a2+a3*v2_a3);
}
为什么double Vector::magitude(Vector v2)这个函数可以访问v2中的数据成员呢?如果一个类声明了两个对象,是不是说对象1的成员函数可以访问对象2中的私有数据成员,只要这两个对象都属于同一个类?
我刚接触c++几天,求牛人指教。
不好意思,是return(a1*v2.a1+a2*v2.a2+a3*v2.a3)
一楼的意思是否是一个函数可以访问形参中的任何数据,即使是其他类的对象中的私有数据?
展开
 我来答
果建翼
2010-02-08 · TA获得超过7923个赞
知道大有可为答主
回答量:1684
采纳率:0%
帮助的人:2436万
展开全部
首先,相同类的不同对象可以访问彼此的私有数据,qht9624543 的回答是错的。

就语言语法定义来说,类的成员函数当然可以访问本类的所有私有数据。如果这个类声明了友元(friend)类或友元函数,那么这些友元类和函数也可以访问其私有数据。

你可以这么理解,一个类是自己的友元,相同类的对象之间是友元关系,所以相同类的对象之间也可以访问彼此的数据。

如果说深一点,为什么要有私有数据,是为了隐藏这个类的细节,让外部不了解这个类细节的代码不去乱用相关数据而导致高耦合。而相同类显然是了解自己的细节的,所以没必要去隐藏私有数据。友元则相当于由程序员指明了某个代码了解这个类的细节。

学C++慢慢来,面向对象这种东西要慢慢去悟,看到一个现状,想想它的本质是什么,为什么要这样,有一天你把它们的缘由都搞清楚的时候你对OOP的理解应该就差不多了,呵呵,加油吧。
qht9624543
2010-02-07 · TA获得超过770个赞
知道小有建树答主
回答量:800
采纳率:0%
帮助的人:835万
展开全部
同一个class的两个不同的object是不能相互访问私有成员的.就连同一个都不能,私有成员只能靠成员函数来调用.
一直没弄懂你的v2是什么....
magnitude这个函数是class vector内部的函数,他可以调用class内部的私有数据,v2如果只是形参,是个传递进去的值,一切就顺理成章了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
virtual_sp
2010-02-07 · TA获得超过166个赞
知道答主
回答量:140
采纳率:0%
帮助的人:80.3万
展开全部
double magnitude(Vector);这个函数类Vector的公有成员函数, double a1,a2,a3;
也是类Vector的私有成员变量,同一个类的函数当让可以调用同一个类中的私有成员变量了,比如私有变量时属性,公有函数是改变属性的方法,那么公有函数就是这个类对外留出用来改变其私有变量的接口了哦。
比如说一个人物类,这个人有什么属性:年龄,年龄会改变,那么我们就留一个接口出来改变这一类人的年龄属性,一样的道理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上上西
2010-02-07 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
是return(a1*v2.a1+a2*v2.a2+a3*v2.a3)吧?没有写限定符一点的就是本类的数据成员,可以访问,还有的就是形参带的.我帮你补充一下基础知识,你现在可能刚刚学,没弄明白成员操作符.的意思,其实你把问题想错了,并不是其他类的私有数据,而是本类的私有数据,为什么这么说?因为你注意看函数的形参,这里的形参其实是本类(vector)的对象,形参名为v2吧?那么很清楚了,是v2在调用自己的成员,而那些没有打点的a1、a2、a3则是当前类定义中成员,像你说的那样,类成员函数是可以访问的没错,有点嵌套的意思,逻辑思路一定要理明白。还有,学c++不是一天2天的事,我自己也还在学,而且学软件都是要靠自学的,楼主买上几本好书看,比如《c++ primer plus》,一定要有决心和毅力,加油,我自己也在努力中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式