1. 含义:友元关系以 friend 关键字声明,包括友元函数和友元类。
2. 作用:访问与其有好友关系的类中的私有成员。
3. 友元函数可以是一般函数(非成员函数),也可以是另一个类中的成员函数。
4. 友元 利弊:
1)利:有助于数据共享,可以提升程序的效率。
2)弊:可以访问其他类的私有数据,破坏了程序的封装性。
5. 示例:
#include <iostream>
using namespace std;
class Date; // 对Date类的提前声明
class Time
{
public:
Time ( int, int, int ); // 声明构造函数
void display ( Date & ); // 成员函数,形参是Date类对象的引用
private:
int hour, minute, sec;
};
class Date
{
public:
Date ( int, int, int );
friend void Time :: display ( Date & ); // 声明Time类中的display函数为本类的友元成员函数
private:
int month, day, year;
};
Time :: Time ( int hour, int minute, int sec ) // 定义Time类的构造函数
{
this->hour = hour;
this->minute = minute;
this->sec = sec;
}
void Time :: display ( Date &date ) // display函数的作用是输出年月日和时分秒
{
// 引用Date类对象中的私有数据
cout << date.month << "/" << date.day << "/" << date.year << endl;
cout << hour << ":" << minute << ":" << sec << endl;
}
Date :: Date ( int month, int day, int year ) // 定义Date类的构造函数
{
this->month = month;
this->day = day;
this->year = year;
}
int main ()
{
Time time ( 10, 13, 56 ); // 定义Time类对象time
Date date ( 7, 19, 2012); // 定义Date类对象date
time.display(date); // 调用time中的display函数,实参是Date类对象date
return 0;
}
运行结果:
分享到:
相关推荐
简单演示了两种友元函数的编写方式,适用于新手学习,作为参考例程
私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦。
实验4 含有类的静态成员与类的友元的C++程序设计 .类的静态成员函数可以通过对象名调用吗?
C++中友元函数的例子,可以通过这些例子认识友元函数
如何声明和创建友元类 简单友元类的声明,C++中友元类的应用范围
本文档详细介绍了C++友元函数及友元类,方便大家对比学习
采用C++语言实现的日期时间合并输出(友元函数)
一 友元 类似 java 中享元模式:实例的共享(ImageLoader Lru 算法 存储图片) 友元:类或函数的共享 优点:提高效率、表达清晰 缺点:破坏封装性 特征: 友元函数不能被派生类继承 友元函数不能使用this
实验4含有类的静态成员与类的友元的C++程序设计
C++学习笔记和常见面试知识点,C++11特性,包括多态、虚表、移动语义、友元函数、符号重载、完美转发、智能指针、const和static、数组指针和指针数组、struct内存对齐、enum和union关键字等等。帮助了解C++的特性,...
1、C++基础学习 友元函数与友元类、引用与指针那些事、深入浅出C++虚函数的vptr与vtable、宏那些事、范围解析...6、effective_c++ 7、STL全面解析 8、开发工具及使用技巧 9、类相关学习 10、线程及并发 11、知识扩展
C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...
实例讲解C++友元,利用实例讲解C++友元的知识
友元函数,类外普通函数声明为类的友元,之后即可与类共享数据
简单的友元类使用,自己编的c++程序,可以作为模板。
主要讲解c++种的友元类友元函数 可以更好地学习其中的内容 友元在类中担任着十分关键的角色 所以更应该认真学习
C++友元函数和友元类的学习心得[归纳].pdf
C++友元习题.pdf
对每个人来说,习惯 C++需要一些时间,...重载、缺省参数、构造和析构函数、自定义操作符、内联函数、引用、友元、 模板、异常、名字空间,等等。用 C++比用 C 具有更宽广的空间,因为设计时 有更多的选择可以考虑。
关于c+模板之友元类友元函数的实例化,图形界面之矩形。