C++之友元函数
2016-07-17 22:23
288 查看
友元函数(friend)
如果不属于当前结构的一个函数想访问当前的结构中的数据,那么就要用友元函数。
注意:friend必须要在结构中声明。
友元函数的实现:
#include<iostream>
using namespace std;
class Test;
void fun(Test x);
class Test
{
friend void fun(Test x); //声明函数friend
public: //公有的
Test(int d=0) //初始化
{
data = d;
}
private: //私有的
int data;
};
void fun(Test x)
{
int value = x.data; //调用初始化构造函数
cout << x.data<<endl; //打印函数执行结果
}
int main()
{
Test t(100);
fun(t);
return 0;
}
注:在使用友元函数时,必须要声明friend,否则无法调用,但是出现这种情况,A是友元函数,在B中声明,程序可以运行正确,但是B如果调用A中的函数,运行就会错误,所以B用A时也必须声明friend。
#include<iostream>
using namespace std;
class B;
class A
{
friend class B;
public:
void fun(B b);
private:
int x;
};
class B
{
friend class A;
public:
void list(A a)
{
a.x;
}
private:
int y;
};
void A::fun(B b)
{
b.y;
}
int main()
{
A aa;
B bb;
aa.fun(bb);
}
4000
如果不属于当前结构的一个函数想访问当前的结构中的数据,那么就要用友元函数。
注意:friend必须要在结构中声明。
友元函数的实现:
#include<iostream>
using namespace std;
class Test;
void fun(Test x);
class Test
{
friend void fun(Test x); //声明函数friend
public: //公有的
Test(int d=0) //初始化
{
data = d;
}
private: //私有的
int data;
};
void fun(Test x)
{
int value = x.data; //调用初始化构造函数
cout << x.data<<endl; //打印函数执行结果
}
int main()
{
Test t(100);
fun(t);
return 0;
}
注:在使用友元函数时,必须要声明friend,否则无法调用,但是出现这种情况,A是友元函数,在B中声明,程序可以运行正确,但是B如果调用A中的函数,运行就会错误,所以B用A时也必须声明friend。
#include<iostream>
using namespace std;
class B;
class A
{
friend class B;
public:
void fun(B b);
private:
int x;
};
class B
{
friend class A;
public:
void list(A a)
{
a.x;
}
private:
int y;
};
void A::fun(B b)
{
b.y;
}
int main()
{
A aa;
B bb;
aa.fun(bb);
}
4000
相关文章推荐
- C语言指针
- C++引用示例&
- C++用mysql自带的头文件连接数据库
- codeforces 527C Glass Carving
- c++11 std::async使用注意
- usaco 2.2.2 subset
- 关于C++ 顶层const和底层const对拷贝操作的影响
- 高级指针
- c++22、string虚假泄露问题,以及简单string类实现
- 必看:学习C语言的思路,让学习不再感到有压力!
- 结构体练习题
- 山东理工OJ 1171 C语言实验——保留整数
- 山东理工OJ 1162 C语言实验——保留字母
- strcat函数用法的一点看法
- C++应用程序性能优化——程序的启动过程
- C语言setpwent()函数:从头读取密码文件中的账号数据
- C语言getpwnam()函数:从密码文件中取得指定账号的数据
- C语言getpwuid()函数:从密码文件中取得指定uid的数据
- C++基础:四大基本函数,构造,析构,拷贝构造,赋值函数
- C++1(Effective C++)