C++ 友元函数用法。
2010-06-15 14:11
183 查看
#include <iostream>
using namespace std;
class A;
class B{
int x, y;
public:
void bf(A &a);
};
class A{
int u, v;
public:
A(int uu=0, int vv=0):u(uu),v(vv){}
friend void fun(A &a);
friend void B::bf(A &a);//这里需要B已经定义
};
void B::bf(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
void fun(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
int main(){
A a(1, 2);
B b;
fun(a);
b.bf(a);
system("pause");
return 0;
}
友元函数内可以直接通过对象.(dot)操作来访问对象的私有成员,当需要设置某类的成员函数为当前类的友元时,其中要特别注意声明和定义的顺序,因为在A中声明B的bf函数必须要满足B类已经被定义(否则这个函数根本就不知道),所以才有上述代码顺序。
using namespace std;
class A;
class B{
int x, y;
public:
void bf(A &a);
};
class A{
int u, v;
public:
A(int uu=0, int vv=0):u(uu),v(vv){}
friend void fun(A &a);
friend void B::bf(A &a);//这里需要B已经定义
};
void B::bf(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
void fun(A &a){
cout << a.u << ' ' << a.v << endl;
a.u++, a.v++;
cout << a.u << ' ' << a.v << endl;
}
int main(){
A a(1, 2);
B b;
fun(a);
b.bf(a);
system("pause");
return 0;
}
友元函数内可以直接通过对象.(dot)操作来访问对象的私有成员,当需要设置某类的成员函数为当前类的友元时,其中要特别注意声明和定义的顺序,因为在A中声明B的bf函数必须要满足B类已经被定义(否则这个函数根本就不知道),所以才有上述代码顺序。
相关文章推荐
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++ 友元函数用法总结
- C++友元函数和友元类用法详解
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能(转载)
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元函数和友元类的用法和功能简析
- C++中友元(友元函数和友元类)的用法和功能
- C++中友元(友元函数和友元类)的用法和功能
- C++扩展笔记3-1-1:C++友元函数和友元类用法谈
- C++中友元(友元函数和友元类)的用法和功能
- typedef函数指针的用法(C++)
- c++ hash_map用法总结
- C++学习之友元类和友元函数