1、析构函数
2、构造函数
3、内联函数
4、拷贝构造函数
5、友元函数
1、析构函数
是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
2、构造函数
是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回void。构造函数可用于为某些成员变量设置初始值。
3、内联函数
有时称作在线函数(inline)。函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作。所谓“内联函数”就是将很简单的函数“内嵌”到调用他的程序代码中,只样做的目的是为了节约下原本函数调用时的时空
析构方法开销。
但必须注意的是:作为内联函数,函数体必须十分简单,不能含有循环、条件、选择等复杂的结构,否则就不能做为内联函数了。事实上,即便你没有指定函数为内联函数,有的编译系统也会自动将很简单的函数作为内联函数处理;而对于复杂的函数,即便你指定他为内联函数,系统也不会理会的。
内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。
4、拷贝构造函数
拷贝构造函数,又称复制构造函数。复制构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象.
为什么需要拷贝构造函数?
把参数传递给函数有三种方法,一种是传值,一种是传地址,一种是传引用。传值与其他两种方式不同的地方在于当使用传值方式的时候,会在函数里面生成传递参数的一个副本,这个副本的内容是按位从原始参数那里复制过来的,两者的内容是相同的。当原始参数是一个类的对象时,它也会产生一个对象的副本,此时需要注意:一般对象在创建时都会调用构造函数来进行初始化,但是在产生对象的副本时如果再执行对象的构造函数,那么这个对象的属性又再恢复到原始状态,这就不是我们希望的了。所以在产生对象副本的时候,构造函数不会被执
行,被执行的是一个默认的拷贝构造函数。当函数执行完毕要返回的时候对象副本会执行析构函数。
拷贝构造函数不可以改变它所引用的对象,如果可以改变,那么将导致无限循环,如果类中没有显示的声明一个拷贝构造函数,那么编译器会为你隐式定义一个位拷贝的默认拷贝构造函数
5、友元函数
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数,只是一个函数,类外直接调用。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字friend,如friend void printWidth( Box box );
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论