首页 > 其他 > 详细

友元函数的作用

时间:2021-05-14 21:12:42      阅读:18      评论:0      收藏:0      [点我收藏+]

友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。  

友元函数 通过对象的引用可以直接 访问私有变量,(不能直接访问私有变量),而一般的函数则不可以。

#include<iostream.h>

class point

{

public:

friend void bb(point cc);

void dd(point cc);

private:

 int aa;

};

 

void bb(point cc)

{int d = cc.aa;}     //通过对象的引用可以直接访问

void dd(point cc)

{int d=cc.aa;}        //不可以直接访问

下面给出一个比较实用的例子-重载运算符“+”:

1#include "stdafx.h"
2#include <iostream>
3
4class Complex //复数类
5{
6private://私有
7double real;//实数
8double imag;//虚数
9public:
10 Complex(double real=0,double imag=0)
11 {
12this->real=real;
13this->imag=imag;
14 }
15 friend Complex operator+(Complex &com1, Complex &com2);//友元函数重载双目运算符+
16void showSum();
17};
18
19
20 friend Complex operator+(const Complex &com1,const Complex &com2)//友元运算符重载函数
21{
22return Complex(com1.real+com2.real,com1.imag+com2.imag);
23}
25void Complex::showSum()
26{
27 std::cout<<real;
28if(imag>0)
29 std::cout<<"+";
30if(imag!=0)
31 std::cout<<imag<<"i"<<std::endl;
32}
33
34int main()
35{
36 Complex com1(10,10),com2(20,-20),sum;
37 sum=com1+com2;//或sum=operator+(com1,com2)
38 sum.showSum();//输出复数相加结果
39
40return0;
41 } 

 

友元函数的作用

原文:https://www.cnblogs.com/findinglei/p/14769641.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!