第12章 类的其他特性
2021/2/24 1 第12章 类的其他特性
友元函数 为什么要定义友员类中的私有数据不能 被外部任意访问修改,只能由 类本身的函数访问修改。 友员的作用被定义为友员的类或函数 可以访问修改类的私有数据。 友员给予别的类或非成员函数 访问私有成员的权利 2021/224
2021/2/24 2 友元函数 为什么要定义友员 类中的私有数据不能 被外部任意访问修改, 只能由 类本身的函数访问修改。 友员的作用 被定义为友员的类或函数 可以访问修改类的私有数据。 友员给予别的类或非成员函数 访问私有成员的权利
友元函数的说明及使用 什么是友员函数将一个外部函数(不是类全 部,也不是部分成员函数)声明为一个类的友员, 使这个函数能访问类的私有和保护成员。 声明形式 friend返回类型函数名(形参); 例如: friend void show(stn&s 例1:用友元函数的方法求圆柱体的体积。 120112001 2021/224 3
2021/2/24 3 友元函数的说明及使用 例1:用友元函数的方法求圆柱体的体积。 1201 什么是友员函数 将一个外部函数(不是类全 部,也不是部分成员函数)声明为一个类的友员, 使这个函数能访问类的私有和保护成员。 声明形式 friend 返回类型 函数名(形参); 例如: friend void show(st_n &st); 12001
注 1友元函数不是类的成员函数,函数体中要用运算符 “”来访问对象的成员,不能用this指针 区别:友元函数必须在类的定义中说明,函数体 可在类内也可在类外定义;友元函数可访问类中的所 有成员。 2类中对友元函数指定访问权限无效。 3友元函数的作用域与一般函数的作用域相同 4使用友元函数的目的是提高程序的运行效率 5.友元函数破坏了类的封装性,因而应谨慎使用。 2021/224
2021/2/24 4 注: 1.友元函数不是类的成员函数,函数体中要用运算符 “.”来访问对象的成员,不能用this指针。 区别:友元函数必须在类的定义中说明,函数体 可在类内也可在类外定义;友元函数可访问类中的所 有成员。 2.类中对友元函数指定访问权限无效。 3.友元函数的作用域与一般函数的作用域相同。 4.使用友元函数的目的是提高程序的运行效率。 5.友元函数破坏了类的封装性,因而应谨慎使用
成员函数用作友元 什么是友员成员函数将一个类的成员函数(不 是类全部)声明为另一个类的友员,使这个函数 能访问该类的私有和保护成员。 声明形式 friend返回类型类名:函数名 例如: friend void sco:show(); 2021/224 5
2021/2/24 5 成员函数用作友元 什么是友员成员函数 将一个类的成员函数(不 是类全部)声明为另一个类的友员,使这个函数 能访问该类的私有和保护成员。 声明形式 friend 返回类型 类名::函数名 例如: friend void sco::show( );