`

友元_c++学习笔记

 
阅读更多

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 语言的核心...

    C++学习笔记、常见面试知识点.zip

    C++学习笔记和常见面试知识点,C++11特性,包括多态、虚表、移动语义、友元函数、符号重载、完美转发、智能指针、const和static、数组指针和指针数组、struct内存对齐、enum和union关键字等等。帮助了解C++的特性,...

    C++学习笔记- 面向对象 .md

    C++学习笔记,博主个人向。内容是C++面对对象的,目录大致来源于菜鸟文档的C++面向对象,笔记是参考各种文章以及菜鸟文档改编的,内容包含C++类和对象(类定义和对象定义,类成员函数,类访问修饰符,友元函数,内联...

    Cpp.rar - C++学习笔记

    标题"Cpp.rar - C++学习笔记"暗示了这份压缩包可能包含一系列关于C++的学习资料,比如笔记、代码示例或者教程。这些笔记可能会涵盖C++的基础语法、类与对象、模板、异常处理、STL(标准模板库)、内存管理等方面。...

    C++完全学习资料 手动笔记!

    总结起来,这份学习资料提供了全面的C++知识体系,从基本的数组和函数,到面向对象编程的关键概念如封装、继承和多态,再到模板和STL的使用,覆盖了C++学习的各个方面。通过系统地学习这些笔记,你可以构建扎实的C++...

    C++基础学习笔记.pdf

    以下是一些C++基础学习的关键知识点: 1. **基本数据类型**:C++中的基本数据类型包括整型(int、short、long、long long)、浮点型(float、double)、字符型(char)以及布尔型(bool)。理解每种类型的数据范围...

    2.14_C++.docx

    C++是一种强大的面向对象...这些是C++入门和进阶学习中的一些核心概念,掌握这些知识点有助于理解和编写C++程序。深入学习还包括模板、异常处理、STL(标准模板库)、智能指针、RAII(资源获取即初始化)等高级主题。

    C++ Primer学习笔记

    《C++ Primer学习笔记》是一份详尽的资料,涵盖了C++编程语言的基础到高级概念。这份笔记旨在帮助初学者和有一定经验的开发者深入理解C++的语法、特性以及最佳实践。C++ Primer是C++编程领域的一本经典教材,以其...

    c++学习笔记。干活!!!

    从给定的文件信息中,可以提取出以下C++编程语言相关的知识点: 1. C++概述:C++是在...在学习C++时,以上内容应为基本概念和语法结构,是后续深入学习面向对象编程、模板编程、异常处理以及STL等高级特性的基础。

    C++学习笔记(快速入门C++)

    ### C++学习笔记知识点梳理 #### 一、开始 C++是一种高级编程语言,它是在C语言的基础上发展起来的,并且增加了面向对象编程的支持。学习C++的第一步是从熟悉其基本语法开始,然后逐渐深入理解面向对象编程的概念...

    自用C++学习笔记,非常适合学习

    在C++编程语言的学习过程中,理解其操作流程和常见陷阱是至关重要的。下面将详细解析标题和描述中涉及的关键知识点。 首先,C++的操作流程主要包括四个主要步骤: 1. **编辑**(Edit):这是编写代码的第一步,使用...

    c++学习笔记.pdf

    - **保护继承(Protected Inheritance)**:保护继承时,基类的所有公有成员和保护成员都成为派生类的保护成员,仅能被派生类成员函数或友元访问。 文档中通过具体的代码示例进一步阐述了不同类型的继承。例如,`...

    C++Primer笔记

    本笔记基于 C++ Primer 的学习笔记,涵盖了友元函数、操作符重载、运算符重载、using 声明和引用等多个知识点。 友元函数 友元函数是一种特殊的函数,它可以访问类的私有成员。通过让函数成为类的友元,赋予该函数...

    钱能的C++笔记,绝对值的珍藏.rar

    综上所述,《钱能的C++笔记——绝对值的珍藏》是一份全面的C++学习资料,覆盖了从基础到进阶的各种主题,对于想要提升C++技能的人来说,无疑是一份宝贵的参考资料。通过深入研读和实践,学习者将能够更好地理解和...

    ( 21天精通C++)学习笔记

    ### (21天精通C++)学习笔记:第十天——友元函数与友元类 #### 友元函数 友元函数是一种特殊的非成员函数,它能够访问类的私有(private)和保护(protected)成员。这对于那些需要共享类内部细节、又不想成为类...

    C++ Primer 第四版学习笔记.rar

    《C++ Primer 第四版学习笔记》是一份深入学习C++编程语言的宝贵资源,它由一位经验丰富的学习者在2014年整理而成,旨在帮助初学者更有效地掌握C++的基础和进阶概念。这份笔记以清晰、实用的方式阐述了C++ Primer第...

    超适合自学的C++基础视频_深入浅出版源码笔记

    总的来说,这个课程通过"传智扫地僧老师"的指导,提供了全面的C++学习资源,从基础到进阶,再到实际应用,旨在帮助自学者构建坚实的C++编程基础,掌握现代软件开发的关键技能。通过配套的源码笔记,你将有机会实践所...

    C++ 培训笔记与代码

    本资源“C++ 培训笔记与代码”提供了深入学习C++的基础和实践材料,适合对C++感兴趣或希望提升C++技能的开发者。 首先,C++的基础部分涵盖了语法、变量、运算符、控制结构(如if语句和循环)、函数等核心概念。在...

Global site tag (gtag.js) - Google Analytics