c++中五种函数的归纳

来源:百度文库 编辑:神马文学网 时间:2024/04/27 06:45:52
【摘要】本文档主要是对构造函数 析构函数 内联函数 重载函数 拷贝构造函数的一些初步了解; 【为什么要引入构造函数】        大部分对象在使用之前没有正确的初始化是C++ 出错的主要领域,引入类的构造函数是正确的初始化类的对象; 对象的初始化是指对象数据成员的初始化,在使用对象前,一定要初始化.由于数据成员一般为私有的,所以不能直接赋值.对对象初始化有以下两种方法:类中提供一个普通成员函数来初始化,但是会造成使用上的不便(使用对象前必须显式调用该函数)和不安全(未调用初始化函数就使用对象)   所以当定义对象时,编译程序自动调用构造函数.         如果要深入了解构造函数,请参考网址 C++类构造函数       [为什么要有析构函数]当对象生命期结束后,系统能够自动回收那些对象应该释放的资源等,所以一般不需要程序员的关心,对于一般的对象,程序中不需要定义析构函数。
//这个问题没有解决 [为什么要有内联函数]因为对内联函数不太熟悉,所以在这里补充内联函数的定义: 内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。
     引入内联函数的目的是为了解决程序中函数调用的效率问题。
     函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特别是对于一些函数体代码不是很大,但又频繁地被调用的函数来讲,解决其效率问题更为重要。引入内联函数实际上就是为了解决这一问题。 在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。显然,这种做法不会产生转去转回的问题,但是由于在编译时将函数体中的代码被替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间代销上不象函数调用时那么大,可见它是以目标代码的增加为代价来换取时间的节省。
         内联函数具有一般函数的特性,它与一般函数所不同之处只在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换。 如果要深入了解内联函数 请参考: 1)百度知道 2)关于c++的内联函数  //这个通过提问的方式来理解新事物,可以尝试; [为什么要引入重载函数]          重载函数是函数的一种特殊情况,为方便使用,C++允许几个功能类似的函数同名,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。  C++的这种编程机制给编程者极大的方便,不需要为功能相似、参数不同的函数选用不同的函数名,也增强了程序的可读性。[为什么要引入拷贝构造函数]//遗留问题 【为什么要引入静态成员函数】//遗留问题 C++中的static