友元函数就是以friend开头的一种破坏类的封装性的一种用法
友元类的私有和保护成员在类外不可以使用
设计了一个后门,通过友元函数可以访问该对象的受限成员
1。该函数放在类内类外声明均可
2。需要通过类的对象访问
如 friend void test(Base & b)
通过b来访问成员
多用于重载 *** 作符,尽量不要用它提供 *** 作受限数据的函数,那样受限就没有意义了
A,B类的定义顺序需要交换一下,另外,A类中的
friend void display(A &t);
需要改为
friend void B::display(A &t);
整个代码改正这样试试:
#include<iostream>
using namespace std;
class A;
class B
{
private:
int a;
int b;
public:
B();
void display(A &t);
};
class A
{
private:
int a;
int b;
public:
friend void B::display(A &t);
A()
{
a = 5;
b = 8;
}
};
B::B()
{
a = 1;
b = 2;
}
void B::display(A &t)
{
cout << ta << endl << tb << endl;
cout << a << endl << b << endl;
}
int main()
{
class A a1;
class B b1;
b1display(a1);
system("PAUSE");
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)