友元函数,故名思议,是类的好朋友。友元函数破坏了类的封装性。友元函数通过对象参数可以访问私有数据成员。
1. 若B类是A类的友元类,则B类的所有成员函数都是A类的友元函数。
2. 友元类通常设计为一种对数据操作或类之间传递消息的辅助类。
// 友元函数.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A{
private:
int a;
public:
A(int _a=0){
a = _a;
};
~A(){};
int getA(){
return a;
}
friend class B;
friend void modify(A *t,int x);//1.声明的位置和public、private没有关系
//2.函数modify是类A的好朋友 即友元函数
};
class B{
public:
void set(int a){
objA.a = a;
}
void printA(){
cout << objA.a << endl;
}
private:
A objA;
};
void modify(A *t, int x){
t->a = x;
}
int _tmain(int argc, _TCHAR* argv[])
{
A a(10);
cout << a.getA() << endl;
modify(&a, 11);
cout << a.getA() << endl;
B objB;
objB.set(300);
objB.printA();
return 0;
}