成员函数和非成员函数的区别(什么叫non-member函数)
本文目录
- 什么叫non-member函数
- C++中静态成员函数和非静态成员函数的区别
- 友元函数有什么作用
- 成员函数和普通函数的所有区别
- 成员函数,友元函数和一般函数的区别
- 什么是类的成员函数和非成员函数
- 函数成员与成员函数的区别
什么叫non-member函数
non-member是:非成员函数非成员函数包括:静态函数、内联函数和非静态函数成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。 成员函数的优势是能够方便的进行动态绑定,实现多态。
C++中静态成员函数和非静态成员函数的区别
静态函数只有当程序结束的时候才从内存消失。而非静态则是动态加载到内存,不需要的时候就从内存消失。据个例子,调用类中的静态函数,你不需要创建对象就可以调用。而对于非静态的函数,你必须要先创建对象,才能够由对象调用。Class::func()//对于静态函数不创建对象,可以这样调用,而非静态必须创建对象。
友元函数有什么作用
问题一:友元函数有什么作用,它主要用在哪些情况下? 定义格式(c++): friend (); 分清成员函数,非成员函数和友元函数 成员函数和非成员函数最大的区别在于成员函数可以是虚拟的而非成员函数不行。所以,如果有个函数必须进行动态绑定(见条款38),就要采用虚拟函数,而虚拟函数必定是某个类的成员函数。关于这一点就这么简单。如果函数不必是虚拟的,情况就稍微复杂一点。 (条款38: 决不要重新定义继承而来的缺省参数值) 举例 看下面表示有理数的一个类: class rational { public: rational(int numerator = 0, int denominator = 1); int numerator() const; int denominator() const; private: ... }; 这是一个没有一点用处的类。(用条款18的术语来说,接口的确最小,但远不够完整。)所以,要对它增加加,减,乘等算术操作支持,但是,该用成员函数还是非成员函数,或者,非成员的友元函数来实现呢? 当拿不定主意的时候,用面向对象的方法来考虑!有理数的乘法是和rational类相联系的,所以,写一个成员函数把这个操作包到类中。 class rational { public: ... const rational operator*(const rational& rhs) const; }; (如果你不明白为什么这个函数以这种方式声明――返回一个const值而取一个const的引用作为它的参数――参考条款21-23。) 条款21: 尽可能使用const 条款22: 尽量用“传引用”而不用“传值” 条款23: 必须返回一个对象时不要试图返回一个引用 现在可以很容易地对有理数进行乘法操作: rational oneeighth(1, 8); rational onehalf(1, 2); rational result = onehalf * oneeighth; 运行良好 result = result * oneeighth; 运行良好 但不要满足,还要支持混合类型操作,比如,rational要能和int相乘。但当写下下面的代码时,只有一半工作: result = onehalf * 2; 运行良好 result = 2 * onehalf; 出错! 这是一个不好的苗头。记得吗?乘法要满足交换律。 如果用下面的等价函数形式重写上面的两个例子,问题的原因就很明显了: result = onehalf.operator*(2); 运行良好 result = 2.operator*(onehalf); 出错! 对象onehalf是一个包含operator*函数的类的实例,所以编译器调用了那个函数。而整数2没有相应的类,所以没有operator*成员函数。编译器还会去搜索一个可以象下面这样调用的非成员的operator*函数(即,在某个可见的名字空间里的operator*函数或全局的operator*函数): result = operator*(2, onehalf); 错误! 但没有这样一个参数为int和rationa......》》 问题二:c++中 友元函数 是什么,有什么用 某些不是类方法的函数如果需要访问类的私有成员就可以把这个函数声明为这个类的友元函数, 只是可以让类外头的函数访问类的私有变量而已, 觉得能用到就用, 虚函数是多态时用到的东西和友元没什么关系 问题三:在C++中,为什么要使用到友元函数呢?有什么好处呢?能否举个例子 友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。 举个通俗的例子吧, 一个家庭,对一般的访客开发的是客厅,厨房等,但卧室这样的私人地方一般访客是禁止访问的,而好朋友 就可以进去了, 问题四:什么是友元?它的作用有哪些?什么是友元函数和友元类 友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。 举个通俗的例子吧, 一个家庭,对一般的访客开发的是客厅,厨房等,但卧室这样的私人地方一般访客是禁止访问的,而好朋友 就可以进去了, 问题五:友元函数的作用是什么? 让一个不是类的成员函数的函数可以访问修改类的私有变量 问题六:友元函数有哪些特点? 友元函数和友元类: 通过友元,一个普通函数或类的成员函数可以访问另一个类的私有数据成员。 友元分为友元函数和友元类,关键字friend放在函数名之前,该函数就是友元函数,放在类名之前,该类就是友元类。友元声明在公有部分还是私有部分都不影响它的使用。 一个函数可以被多个类声明为友元这样就可引用多个类中的私有数据。 友元的关系是单向的,不是双向的。 友元关系不能传递。 给个例子: #includeusing namespace std;#includeclass Time{ public: Time(int,int,int); friend void display(Time &);友元函数的声明 private: int hour,minute,second;}; Time::Time(int h,int m,int s){ hour=h; minute=m; second=s;} void display(Time &t){ cout 问题七:C++中友元函数的优缺点 C++中,定义一个类中的成员分为私有成员、受保护成员和公有成员,我们知道,这些私有成员和受保护的成员是无法通过对象直接访问的,而是要通过调用公有成员函数从而间接的访问这些私有成员,那假如我的程序中出现循环要重复访问这个私有成员时,每次都要先通过调用公有成员间接的来访问该私有成员,这将造成空间和时间上的大大浪费。 所以,我们就想怎么样能够使对象直接访问这些私有成员呢?那我们就引入了友元这个概念,假设定义了一个A类,又定义了一个B类,如果我们想使B中的某个函数f1可以直接访问A类中的私有成员,那我们就在该函数f1的前面加上friend。 嘿嘿 废话比较多 只是想让你更加深入的了解友元。 如果让我说优缺点的话(用我的话来说): (1)优点:可以使定义为友元函数或者友元类的函数直接访问另一个类中的私有成员和受保护成员,提高效率,方便编程。 (2)缺点:破坏了类的封装性,提供了安全漏洞 问题八:什么叫友元函数? 友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。 友元函数 : 友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数); 友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。 一个函数可以是多个类的友元函数,只需要在各个类中分别声明。 友元函数的调用与一般函数的调用方式和原理一致。 友元类 : 友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。 当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下: friend class 类名; 其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。 例如,以下语句说明类B是类A的友元类: class A { … public: friend class B; … }; 经过以上说明后,类B的所有成员函数都是类A的友元函数,能存取类A的私有成员和保护成员。 使用友元类时注意: (1) 友元关系不能被继承。 (2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。 (3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明 问题九:友元函数与成员函数的区别? 友元函数是非成员函数,可以在他的函数体中可以通过对象名访问类的的私有和保护成员,一般情况下,它在类中声明,在类外实现
成员函数和普通函数的所有区别
区别很大:1.成员函数是面向对象的概念,所谓的成员函数,是指一个函数作为类的成员,公有成员、私有成员或者保护成员。2.普通函数一般有两种传递方式,按类型传递和按值传递,也就是传指针和传返回值两种情况。成员函数一般是按类型传递,也即是传指针地址3.普通函数可以随便调用,并且无法继承和封装,成员函数根据类的不同,可以进行继承,根据公有私有的不同,调用方式也不同4.深层次的区别,普通函数作为C语言的概念,用的是stdlib,成员函数是用iostream,编译方法不同,至于谁占内存多,并不好说,也不是说面向对象的就占内存大些,还是看具体的环境和编译器。5.嵌入式的编程,用普通函数较多,成员函数较少,当然ARM嵌入linux那种例外大体上能一下子想到的只有这么多了函数是否分配内存,看变量,这个问题,我得详细解释一下,你是否熟悉汇编?知道不知道函数字段这个概念,也就说,所有函数都是分配在一段共享字段里面的,也就是你所说的内存,其实不仅仅是内存,包括闪存等等都可以包含,所以是占用了一段空间的,只是这段空间不一定在内存内,可能在闪存内,也可能在硬盘内,这么说,你清楚吗?
成员函数,友元函数和一般函数的区别
成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无须使用成员操作符。友元函数不是类的组成部分,因此被称为直接函数调用。友元函数不能隐式访问类成员,而必须将成员操作符用于作为参数传递的对象。
什么是类的成员函数和非成员函数
没有非成员函数的说法。成员函数就是类内部的函数,可以使公有(public)的,私有(private)的,保护(protected)的。你所指的非成员函数就应该是没有在类里定义的函数吧。
函数成员与成员函数的区别
函数成员的解释是msdn上找的:函数成员是包含可执行语句的成员。函数成员总是类型的成员,不能是命名空间的成员。就是函数中的语句的具体成员吧,比如e=value等等成员函数是类中的函数比如classA{intm;voidSetM(intx){m=x;}};voidSetM(intx)本身就是A的成员函数而m=x是函数voidSetM(intx)的函数成员
本文相关文章:
cesium的datasource(Cesium快速上手9-Camera和Scene中的其他函数使用)
2024年9月9日 18:01
day函数是什么意思(函数DAY($A$3)*4-4 代表什么意思)
2024年9月8日 10:45
递归算法解决八皇后问题(用递归函数设计八皇后问题的回溯算法C++代码)
2024年9月8日 09:01
c语言lseek函数的用法(问一个关于lseek函数的效率问题)
2024年9月7日 14:45
python递归函数考试题(python题目:要求用递归、递推和Lambda三种方式编写power(n,x)函数)
2024年9月6日 03:40
c语言中函数abs 和 fabs有什么区别?C语言中fabs表示什么意思
2024年9月4日 08:10
matlablength函数用法(如何使用MATLAB作出如下函数ns关于x变化的函数,x的取值范围为0到10)
2024年9月1日 04:40
php截取字符串以特定的字符分割(PHP怎么用substr函数截取字符串中的某部分)
2024年9月1日 03:45
small函数相反的函数(excel中small函数有什么作用)
2024年9月1日 01:40
easyx安装教程(【C语言】如何在VC++6.0中使用TC2.0特有的函数呢)
2024年8月31日 06:40
更多文章:
有哪些比较准确的手机地图导航软件?国内自驾游使用哪种导航最靠谱
2024年7月1日 07:52
绿松石为什么那么贵(怎么盘绿松石才正确 绿松石为什么那么贵)
2024年7月25日 11:46
importance的形容词(important有没有什么变化形式,比如ing形式或过去式等等,能把你知道的都写出来吗)
2024年7月15日 11:27
滑块轴承调节器(滑动轴承中的有一种是自动调心轴承,一般用在什么地方,举一些具体的例子)
2024年7月22日 04:20
数据分析师八大能力培养(什么类指标是电子商务数据监控的核心之一)
2024年6月26日 10:17
c语言12345输出54321(输入一个整数,将其逆序输出,去(输入12345输出54321)这道题怎么做啊求解)
2024年7月24日 01:21
strcmp函数会忽略大小写吗(if(strcmp(ch,“Y“)==0||strcmp(ch,“y“)==0))
2024年6月2日 02:20
snap翻译成中文(中国古代文言文言简意赅,为什么要发展成现代白话罗啰嗦嗦)
2024年6月6日 02:23
正则表达式6位数字怎么写(java 三位字母加6位数字的正则表达式怎么写)
2024年7月23日 23:14
企业微信直播一直数据加载中(进入企业微信直播显示数据加载中)
2024年7月11日 11:41
dede模板文件(dede网站 站内搜索时提示“模板文件不存在,无法解析”是怎么回事那位大师给指点一下)
2024年6月25日 07:39
concerta(Cash Cash的《Concerta》 歌词)
2024年7月10日 13:29
哈夫曼树的叶子结点怎么算(n个叶子结点的哈夫曼树有多少个结点)
2024年8月7日 00:05