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;
}
运行结果:
分享到:
相关推荐
这个“C & C++学习笔记集合”显然是一份综合性的资源,旨在帮助学习者深入理解和掌握这两种语言。 C 语言是基础,它的语法简洁明了,对内存管理有直接的控制,是理解计算机底层工作原理的良好起点。C 语言的核心...
C++学习笔记和常见面试知识点,C++11特性,包括多态、虚表、移动语义、友元函数、符号重载、完美转发、智能指针、const和static、数组指针和指针数组、struct内存对齐、enum和union关键字等等。帮助了解C++的特性,...
C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...
标题"Cpp.rar - C++学习笔记"暗示了这份压缩包可能包含一系列关于C++的学习资料,比如笔记、代码示例或者教程。这些笔记可能会涵盖C++的基础语法、类与对象、模板、异常处理、STL(标准模板库)、内存管理等方面。...
总结起来,这份学习资料提供了全面的C++知识体系,从基本的数组和函数,到面向对象编程的关键概念如封装、继承和多态,再到模板和STL的使用,覆盖了C++学习的各个方面。通过系统地学习这些笔记,你可以构建扎实的C++...
以下是一些C++基础学习的关键知识点: 1. **基本数据类型**:C++中的基本数据类型包括整型(int、short、long、long long)、浮点型(float、double)、字符型(char)以及布尔型(bool)。理解每种类型的数据范围...
C++是一种强大的面向对象...这些是C++入门和进阶学习中的一些核心概念,掌握这些知识点有助于理解和编写C++程序。深入学习还包括模板、异常处理、STL(标准模板库)、智能指针、RAII(资源获取即初始化)等高级主题。
《C++ Primer学习笔记》是一份详尽的资料,涵盖了C++编程语言的基础到高级概念。这份笔记旨在帮助初学者和有一定经验的开发者深入理解C++的语法、特性以及最佳实践。C++ Primer是C++编程领域的一本经典教材,以其...
从给定的文件信息中,可以提取出以下C++编程语言相关的知识点: 1. C++概述:C++是在...在学习C++时,以上内容应为基本概念和语法结构,是后续深入学习面向对象编程、模板编程、异常处理以及STL等高级特性的基础。
### C++学习笔记知识点梳理 #### 一、开始 C++是一种高级编程语言,它是在C语言的基础上发展起来的,并且增加了面向对象编程的支持。学习C++的第一步是从熟悉其基本语法开始,然后逐渐深入理解面向对象编程的概念...
在C++编程语言的学习过程中,理解其操作流程和常见陷阱是至关重要的。下面将详细解析标题和描述中涉及的关键知识点。 首先,C++的操作流程主要包括四个主要步骤: 1. **编辑**(Edit):这是编写代码的第一步,使用...
- **保护继承(Protected Inheritance)**:保护继承时,基类的所有公有成员和保护成员都成为派生类的保护成员,仅能被派生类成员函数或友元访问。 文档中通过具体的代码示例进一步阐述了不同类型的继承。例如,`...
本笔记基于 C++ Primer 的学习笔记,涵盖了友元函数、操作符重载、运算符重载、using 声明和引用等多个知识点。 友元函数 友元函数是一种特殊的函数,它可以访问类的私有成员。通过让函数成为类的友元,赋予该函数...
综上所述,《钱能的C++笔记——绝对值的珍藏》是一份全面的C++学习资料,覆盖了从基础到进阶的各种主题,对于想要提升C++技能的人来说,无疑是一份宝贵的参考资料。通过深入研读和实践,学习者将能够更好地理解和...
### (21天精通C++)学习笔记:第十天——友元函数与友元类 #### 友元函数 友元函数是一种特殊的非成员函数,它能够访问类的私有(private)和保护(protected)成员。这对于那些需要共享类内部细节、又不想成为类...
《C++ Primer 第四版学习笔记》是一份深入学习C++编程语言的宝贵资源,它由一位经验丰富的学习者在2014年整理而成,旨在帮助初学者更有效地掌握C++的基础和进阶概念。这份笔记以清晰、实用的方式阐述了C++ Primer第...
总的来说,这个课程通过"传智扫地僧老师"的指导,提供了全面的C++学习资源,从基础到进阶,再到实际应用,旨在帮助自学者构建坚实的C++编程基础,掌握现代软件开发的关键技能。通过配套的源码笔记,你将有机会实践所...
本资源“C++ 培训笔记与代码”提供了深入学习C++的基础和实践材料,适合对C++感兴趣或希望提升C++技能的开发者。 首先,C++的基础部分涵盖了语法、变量、运算符、控制结构(如if语句和循环)、函数等核心概念。在...
### C++&C学习笔记知识点概览 #### 类与数据抽象 - **概念**:类是一种用户自定义的数据类型,它将数据(属性)和作用于数据上的操作(方法)封装在一起,从而实现了数据的抽象。 - **特点**:与C语言中的结构体...