友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数类授予它的友元函数特别的访问权。
定义格式:friend <返回类型> <函数名> (<参数列表>);
//friend.cc
#include <iostream>
#include <cstring>
using namespace std;
class Student
{
private:
int no;
char name[20];
public:
Student(int, const char*);
friend void print(const Student&);
friend ostream& operator<<(ostream&, const Student&);
};
Student::Student(int no, const char *name)
{
this->no = no;
//name是一个char类型的数组,故不能直接用stu.name = "hahaya"进行赋值
strcpy(this->name, name);
}
void print(const Student &stu)
{
cout << "学号:" << stu.no << "姓名:" << stu.name << endl;
}
ostream& operator<<(ostream &os, const Student &stu)
{
os << "学号:" << stu.no << "姓名:" << stu.name;
return os;
}
int main()
{
Student stu(1, "hahaya");
print(stu);
cout << stu << endl;
return 0;
}
程序运行结果:
在friend.cc中定义了两个友元函数,从这两个函数中不难发现:一个类的友元函数可以访问该类的私有成员。其中重载的"<<"操作符必须定义为友元函数,因为输出流os对象会调用Student类中的私有成员。如果不定义为友元函数,则类外对象不能调用该类的私有成员。
分享到:
相关推荐
c++ demo,重载运算符,友元函数的实现
友元函数,类外普通函数声明为类的友元,之后即可与类共享数据
这是关于C++中、如何将普通函数声明友元函数的、求间隔日期的例子。适用于C++初学者学习用。
C++友元函数的使用,这个友元函数是另一个类的成员函数
本文档详细介绍了C++友元函数及友元类,方便大家对比学习
一个实例,实现运算符重载(成员函数和非成员函数两种方式),友元函数的使用,注意事项等,自己学习时编写的,
日期类Date包含日期的年、月、日三个数数据成员,编写一个友元函数,求两个日期之间相差的天数; 重要的是理顺:这个函数不是Date类的成员函数
友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有...
采用C++语言实现的日期时间合并输出(友元函数)
② 首先,采用友元函数distance()的方式实现友元接口;其次,采用友元成员distance()的方式实现友元接口;最后,尝试采用友元类的方式实现友元接口。 ③ 对于友元成员和友元类两种实现方式,可以另外定义一个求解两...
关于c+模板之友元类友元函数的实例化,图形界面之矩形。
C++中友元函数的例子,可以通过这些例子认识友元函数
介绍c++ 友元函数的定义使用,初步入门教程
设计一个友元函数,比较某两个学生成绩的高低 2. 创建一个Message类,其构造函数带有一个string类型的默认参数 3. 制定自己的C++编码规范;编制一个程序,度量由用户指定的、严格按照C++编码规范编写的C++源文件...
友元函数和友元类的需要:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又...
(1) 定义一个Boat和Car两个类,他们都具有私用属性--重量; (2)编写一个函数,计算两者的重量和。
写的很好的c++PPT
以下是对C++运算符重载 成员函数与友元函数进行了介绍,需要的朋友可以过来参考下
一、友元函数 1.友元函数概述: (1)友元函数是定义在一个类外的普通函数。 友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。 (2)友元函数不是成员函数。 不能通过对象来调用,而是直接调用;友元函数...