1、类的构造函数、析构函数和赋值函数:分别用于处理对象的创建、销毁和赋值操作
构造函数和析构函数有固定的函数名(与类名相同,析构函数前面再加上~),都没有返回值。
可以重载多个构造函数,分别传入不同的参数形式,以不同的方式创建对象。C++默认生成一个不带参数的构造函数,如果不需要特殊处理则不需要人工实现该函数。
在实现派生类的构造函数时,必须同时也为基类指定某个构造函数,否则编译器找不到响应的构造函数将会报错。
类的内部包含某个对象作为数据成员,而且存在某个基类时,构造函数的形式较为复杂。为了便于理解可以考虑将数据成员对象的构造放在函数体内实现,在声明构造函数是仅考虑基类的构造。
析构函数比较简单,该函数不允许带参数,不允许重载,也不能为私有类型。主要在析构函数中实现一些收尾工作,比如释放其他方法在堆内存中申请的空间等。析构函数可以被声明为虚函数,虚析构函数主要作用是使用delete函数删除对象是确保调用到正确的一个析构函数。
关于构造和析构的顺序,构造一个类的时候先调用基类后调用派生类的构造函数,析构的时候刚好相反。
2、类的拷贝构造函数和赋值函数
这两个函数不同。拷贝构造函数可以认为是构造函数的一种,用于在一个已经存在的基础上构建新的对象;赋值函数则直接对一个对象按照另一个对象进行呢按位赋值。如果类存在指针变量,直接赋值会造成浅拷贝和内存泄露,此时应用拷贝构造函数进行进一步处理防止此类问题。
3、内联函数和友元函数
内联函数用于以更高效率的方式执行对函数的调用操作。通常可以将被频繁调用的函数设置为内联函数,这样该函数将在编译的时候把代码写入目标程序中,而普通函数是在运行时调用。定义内联函数只需要在函数的定义之前加关键字inline。内联函数中不能使用循环和switch语句。
友元是一种突破类的封装性的机制,可以设置友元函数和友元类来授权其在本类的外部访问私有成员。必须要本类的授权才有效,其他类或函数无权“自封”为某个类的友元。