我一直以为私有成员只能被包含它的对象自己访问。但是今天在看操作符重载时发现私有和保护成员同样可以被和包含它们对象所属一样的类的其他对象访问。后来写程序试了一下,发现和操作符重载没有关系。好像C++本身就是如此
比如:
class derive
{
private:
int _i;
public:
void test(derive &d)
{
d._i = 2;
cout << "derive test " << d._i << endl;
}
};
int main()
{
derive d;
derive d1;
d.test(d1);//显示 derive test 2
}
在test函数中访问了另一个derive类型的变量d的私有成员_i。似乎同一种类的对象互相之间都可以任意访问对方的成员?不知是不是这么一种说法?
C++中对象可以访问和该对象相同类的其他对象的私有成员?
-
- 帖子: 25
- 注册时间: 2009-02-21 22:20
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
本来就是可以的
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
- wenstream
- 帖子: 186
- 注册时间: 2008-06-18 22:02
Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
被标题绕晕了,路过。。。。
- zhu527812567
- 帖子: 883
- 注册时间: 2009-11-17 12:29
- 联系:
Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
那不是很方便么
类的成员函数能访问该类自己(!不是指父类)所有成员...
类的成员函数能访问该类自己(!不是指父类)所有成员...
-
- 帖子: 13
- 注册时间: 2009-04-30 21:14
Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
同一个类的成员之间可以相互访问,但是不能访问被继承对象的private对象,除非有friend函数。
如果是重定义某个类的成员函数,那么它同样可以访问该类的私有成员。
如果是重定义某个类的成员函数,那么它同样可以访问该类的私有成员。
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: C++中对象可以访问和该对象相同类的其他对象的私有成员?
类是在编译阶段就存在的概念,对象是在运行阶段才存在的。cxzqw 写了:我一直以为私有成员只能被包含它的对象自己访问。但是今天在看操作符重载时发现私有和保护成员同样可以被和包含它们对象所属一样的类的其他对象访问。后来写程序试了一下,发现和操作符重载没有关系。好像C++本身就是如此
比如:
C++的私有判断是在编译时间决定的,因此C++的私有只能是基于类的,不是基于对象的。
记得这句话就够了。