有关友元函数的使用,说明如下: 友元函数不是类的成员函数 友元函数近似于普通的函数,它不带 有this指针,因此必须将对象名或对 象的引用作为友元函数的参数,这样 才能访问到对象的成员
第一章 VC集成开发 环境 6 有关友元函数的使用,说明如下: 友元函数不是类的成员函数 友元函数近似于普通的函数,它不带 有this指针,因此必须将对象名或对 象的引用作为友元函数的参数,这样 才能访问到对象的成员
class at float x, y; 友元函数只能用对象 public 名引用类中的数据。 A (float a, float b x=a;y=b; j 成员函数 float Sumo return x+y;3 friend float Sum(a &a return axa y, 3 友元函数 私有数据 void main(void) {A1(4,5)2(10,20);成员西数的调用,利用对象名调用 cout<<t1 Sum(<<endl; c0ut<sum(t2)≤endl 友元函数的调用,直接调用
第一章 VC集成开发 环境 7 class A{ float x,y; public: A(float a, float b){ x=a; y=b;} float Sum(){ return x+y; } friend float Sum(A &a){ return a.x+a.y; } }; void main(void) { A t1(4,5),t2(10,20); cout<<t1.Sum()<<endl; cout<<Sum(t2)<<endl; } 友元函数 成员函数 友元函数的调用,直接调用 成员函数的调用,利用对象名调用 友元函数只能用对象 名引用类中的数据。 私有数据
●●● ●●●●● 友元函数与一般函数的不同点 ●●● 友元函数必须在类的定义中说明,其函数体 可在类内定义,也可在类外定义; 它可以访问该类中的所有成员(公有的、私 有的和保护的),而一般函数只能访问类中 的公有成员
友元函数与一般函数的不同点 ⚫ 友元函数必须在类的定义中说明,其函数体 可在类内定义,也可在类外定义; ⚫ 它可以访问该类中的所有成员(公有的、私 有的和保护的),而一般函数只能访问类中 的公有成员
class a float x, y public: A (float a, float b) x=a; y=b; 3 float Getxoi return x;) float Getyoi return y;}成员函数 float Sumo return X+y; friend float Sum(a &) 友元函数 普通函数,必须通过公有函数访问私有成员 float Sumxy(a &ai return a Getx(+a. Getyo; j float Sum(a &a) return a xtay;A void main(void) 友元函数,可以直接调用类中私有成员 Atl(1,2,t2(10,20),t3(100200) cout<<tl Sumo<<endl; 对象调用成员函数 cout<<Sum(t2)<<endl 调用友元函数 cout<<sumxy3) <endl;;、调用一般函数
9 class A{ float x,y; public: A(float a, float b){ x=a; y=b;} float Getx(){ return x; } float Gety(){ return y; } float Sum(){ return x+y; } friend float Sum(A &); }; float Sumxy(A &a){ return a.Getx()+a.Gety(); } float Sum(A &a){ return a.x+a.y; } void main(void) { A t1(1,2),t2(10,20), t3(100,200); cout<<t1.Sum()<<endl; cout<<Sum(t2)<<endl; cout<<Sumxy(t3)<<endl; } 成员函数 友元函数,可以直接调用类中私有成员 普通函数,必须通过公有函数访问私有成员 对象调用成员函数 调用友元函数 调用一般函数 友元函数
●●● ●●●●● 友元函数 ●●● 友元函数不受类中访问权限关键字的限制,可 以把它放在类的私有部分,放在类的公有部分 或放在类的保护部分,其作用都是一样的。换 言之,在类中对友元函数指定访问权限是不起 作用的。 ●友元函数的作用域与一般函数的作用域相同。 ●谨慎使用友元函数 ●通常使用友元函数来取对象中的数据成员值, 而不修改对象中的成员值,则肯定是安全的
友元函数 ⚫ 友元函数不受类中访问权限关键字的限制,可 以把它放在类的私有部分,放在类的公有部分 或放在类的保护部分,其作用都是一样的。换 言之,在类中对友元函数指定访问权限是不起 作用的。 ⚫ 友元函数的作用域与一般函数的作用域相同。 ⚫ 谨慎使用友元函数 ⚫ 通常使用友元函数来取对象中的数据成员值, 而不修改对象中的成员值,则肯定是安全的