C++的同一个类的不同对象可以相互访问private成员 是不是?

不是。
首先说说类和类对象的区别。
类是一个广义概念、类对象是类这个广义概念中的具体。就相当于人类与某个具体的人一样。那么私有成员就相当于人这个类中大脑之类的器官定义。每个正常的人都有大脑,但是人与人之间不能直接使用对方的大脑对吧。同样的 同一个类的不同对象也不能互相访问private成员。c++中同一个类的不同对象可以访问对方的private成员,公有继承可以把基类的private成员也继承下去,把函数为虚函数的用途是包含这个函数的类一般都是会派生出新的类,这个函数就是一个接口,就是说这个函数在派生出的类中会被重写当对象被声明,就会有自己独立的空间了,所以不能访问其他空间的成员,除非是静态变量,因为静态变量属于类,不属于对象。w.b(i) 是调用int b(const a &t)这个public function,再通过它访问private member d。它并没有直接访问private member,所以没有问题。

在main中,下面三行可见的部分没用任何private member,因此符合语法。
a w(1);
a i(3);
w.b(i);int b(const a &t)
{
std::cout<<t.d<<"??/n";
return 0;
}
因为b()是公有成员函数,能被a的对象调用,而b(i)中b 的参数就是a的对象(本例是i)的别名t,它的功能就是通过t也就是对象i调用对象i的成员变量,并不是b直接访问的
猜你喜欢