CSDN论坛 > C/C++ > C语言

友元成员函数的问题 [问题点数:0分]

Bbs1
本版专家分:2
结帖率 100%
CSDN今日推荐
Bbs6
本版专家分:7347
Bbs1
本版专家分:20
Bbs4
本版专家分:1338
Bbs2
本版专家分:285
匿名用户不能发表回复!
其他相关推荐
C++友元函数、友元类、友元成员函数
众所周知,C++控制对类对象私有部分的访问。通常,公有类方法提供唯一的访问途径,但是有时候这种限制太严格,以至于不适合特定的编程问题。在这种情况下,C++提供了另外一种形式的访问权限:友元,友元有3种: 友元函数、友元类、友元成员函数。 通过让函数成为类的友元(即:友元函数),可以赋予该函数与类的成员函数相同的访问权限。在介绍如何成为友元前,先介绍为何需要友元。在为类重载二元运算符时(带有两个参
C++Primer之友元
要想令某个成员函数作为友元,例如,在Wondow_mgr中的成员函数clear需要调用Screen类中的私有成员,则必须按照如下方式设计程序: 1.首先定义Window_mgr类,其中声明clear函数,但是不能定义它,在clear使用Screen的成员之前必须先声明Screen; 2.接下来定义Screen,包括对clear的友元声明; 3.最后定义clear,此时它才可以使用Screen的
C++友元函数访问类的私有成员
在一些工程中我们经常需要访问某些类的静态成员,添加一个友元函数可以达到我们的目的。#include <iostream>#include<cstring>using namespace std ;class Student{private:string  name; int age; int sore;public:Student(string name,int age,i...
C++之friend友元类和友元函数
将数据和处理数据的函数封装在一起,构成类,实现了数据的隐藏,无疑是面向对象程序设计的一大优点。但是有时候封装不是绝对的。 友元函数提供了不同类或对象的成员函数之间、类的成员函数和一般函数之间进行数据共享的机制。通俗的说,友元关系就是一个类主动声明哪些类或函数是它的朋友,进而给它们提供对本类的访问特性。也就是说,通过友元关系,一个普通函数或者类的成员函数可以访问封装于另外一个类中的数据。 从一定
C++运算符重载形式——成员函数or友元函数
运算符重载是C++多态的重要实现手段之一。通过运算符重载对运算符功能进行特殊定制,使其支持特定类型对象的运算,执行特定的功能,增强C++的扩展功能。运算符重载的我们需要坚持四项基本原则: (1)不可臆造运算符; (2)运算符原有操作数的个数、优先级和结合性不能改变; (3)操作数中至少一个是自定义类型; (4)保持重载运算符的自然含义。一般来说,C++运算符重载可采用成员函数和友元函数,二者
友元函数与成员函数的一点区别
最近,学习友元函数,发现友元函数可以操作成员变量,包括私有成员变量。 但是,友元函数和类的成员函数相比,还是有区别。 例如,在友元函数中,无法直接操作成员变量。必须要现有一个类的对象,再通过这个对象使用圆点操作符 void   friendFunction(classA   &temp)   //此处使用了传引用调用,传递一个类的对象进来,并且可以直接更改里面的值 { t
运算符重载,什么时候用友元?
重载ostream和istream运算符的时候,必须重载为友元,这是为什么?// over load input and output operators >friend ostream& operator<<(ostream &output, MyString &str);friend istream& operator>>(istream &input, MyString
将类的成员函数作为回调函数(外一篇:友元函数)
转自:http://blog.csdn.net/xylary/article/details/1548596 将类成员函数用做C回调函数 提出问题:  回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 分析原因: 普通的C+
C++编程规范之44:优先编写非成员非友元函数
摘要: 要避免交成员费:尽可能将函数指定为非成员非友元函数。 非成员非友元函数通过尽量减少依赖提高了封装性:函数体不能依赖于类的非公用成员。它们还能够分离巨类,释放可分离的功能,进一步减少耦合。它们能够提高通用性,因为在不知道一个操作是否为某个给定类型的成员的情况下,很难编写模版。 使用下面的方法确定函数是否应该是成员和友元: //如果别无选择,就无需选择了;如果必需,就指定为成员;
友元函数重载运算符
1. >> 不知道你有没有看过iostream的头文件,在iostream中,>>和操作符重载的时候就非常的特殊的,因为它们本身是一个类,你在重载了以后就必须是用友元函数来调用访问,这里就有一个问题了,一个类里面是可以定义另一个类的成员的,相必这个你也知道,但是,你总不可能在一个雷里面用操作符来实例化一个成员吧?所以想要对这两个操作符重载的时候也就只能用友元函数了 希望对你有所帮助,祝你顺
关闭