這不破壞封裝嗎?C++:傳遞給非朋友的朋友函數
了Bh:
class B{
int x, y;
public:
B() : x(1), y(1) {}
B(const B& obj) : x(obj.x), y(obj.y) {}
int getx();
int gety();
friend void pass_private_members(B&);
};
B.cpp
void non_friend_pass_private_members(int& x);
int B::getx(){
return this->x;
}
int B::gety(){
return this->y;
}
void pass_private_members(B& obj){
non_friend_pass_private_members(obj.x);
}
void non_friend_pass_private_members(int& x){
x++;
}
的main.cpp
int main(){
B obj;
pass_private_members(obj);
cout << obj.getx() << endl;
return 0;
}
不,也不會從朋友函數的上下文中調用'char *'成員的'strcpy()'。同樣,它不是好友,但來電*是*。友誼賦予與對象相同的特權。所以問問自己:你可以從* objects *成員函數調用'non_friend_pass_private_members()'嗎? – WhozCraig 2013-03-25 04:26:11
「破壞封裝」的含義並不清楚。 – 2013-03-25 04:29:10
@VaughnCato訪問來自非朋友和非會員功能的私人成員 – naxchange 2013-03-25 04:30:23