#include <iostream>
using namespace std;
class test{
private:
int a;
int b;
public:
test(int a = 1, int b = 2){
this->a = a;
this->b = b;
}
int re(test ccc){
a = ccc.a + 444;
b = ccc.b + 444;
}
};
为什么re函数中的ccc可以直接调用a和b而不报错?
搜了下(关键字: c++ access class private variable),这里有不错的解释:
http://stackoverflow.com/questions/7396846/with-a-private-modifier-why-can-the-member-in-other-objects-be-accessed-directl
因为 C++ 中一个类是自己这个类的友元(friend class)。
因为 a,b 都是 test 类的成员。
一个类的方法可以访问自己的私有成员
同一类的不同对象间可以互相访问私有成员
一个类里当然可以
私有数据不能被直接访问,只能通过类的成员函数和友元函数调用。
友元函数 http://learn.jser.com/cplusplus/cpp-friend-functions.html