一,类的六个默认成员函数
一,构造函数:
✿构造函数是一个特殊的成员函数,名字与类的相同,创建类类型对象时由编译器自动调用。保证每个成员都有一个合适的初始值,对象在整个生命周期只调用一次。
✿构造函数是一个特殊的成员函数,需要注意的是,构造函数·名称虽然是叫构造,但是构造函数的主要责任并不是开空间创建对象,而是初始化对象。
✿特点:1.函数名与类名相同 2. 无返回值
3.对象实例化时编译器自动调用对应的构造函数
4.构造函数可以重载
5.如果类中没有定义构造函数,则c++编译器会自动生成一个无参数的默认构造函数,一旦用户定义编译器将不在生成。
6.无参数和全缺省的构造函数都成为构造函数,并且默认构造函数只有一个。)(注:无参构造函数,全缺省构造函数,我们没有编写编译器会默认生成的构造函数,都可以认为时构造函数)
eg:无参数构造函数(会生成随机值)
eg:带参数的构造函数
析构函数
与构造函数的功能相反,析构函数不是完成对对象本身的销毁,局部对象的销毁工作石油编译器完成的。而对像在销毁时会自动调用析构函数,完成对象中资源的清理。
特性:1.析构函数是在类名前加字符~。 2.无参数无返回值类型。
3.一个类只能有一个析构函数。若显示未定义,系统则会生成一个析构函数。(析构函数不能重载)
4.对象生命周期结束时,c++编译系统会自动调用析构函数。
二,拷贝构造函数
只是单个形参,该形参是对类类的对象的引用(一般用const修饰),已存在的类类型对象创建新对象时由编译器自动调用。
特征
(1)拷贝构造函数是构造函数的重载形式。
(2)拷贝构造函数的参数只有一个且必须是类类型的引用(使用传值方式编译器直接报错,应为会发生无穷递归)
(3)若显示未定义,编译器会生成,默认拷贝函数。(默认拷贝构造函数对象按内存存储按字节完成拷贝,这种叫浅拷贝或值拷贝)
三,赋值体运算符与重载
运算符重载
运算符重载是具有特殊函数名的函数,也是具有参数,返回值,参数列表,其返回值与其普通函数相似。
函数名:关键字 operator 后面需要重载的运算符。
函数原型:返回类型 operator 操作符(参数列表)
注:(1)不能通过链接其他操作符来创建新的操作符:比如:operator@
(2)重载操作符必须有一个类类型参数
(3)用于内置类型的运算符,其含义不能改变:例如:内置类型+,不能改变其含义。
(4)作为类成员函数重载时,其形参看起来要比操作数少1,因为成员函数的第一个参数为隐藏参数 this
(5).* :: sizeof ?: . 这五个运算符不能重载。
赋值运算符重载
赋值运算符的重载格式
✿参数类型:const & 传递引用可以增加传递效率
✿返回值类型:返回类型& 返回应可以加快效率,返回值的目的是为了连续赋值。
✿检查自己是否给自己赋值
✿返回 *this :要复合连续赋值的含义
赋值运算只能重载成类的成员函数不能重载成全局变量
原因:如果赋值运算符不显示实现,编译器会生成一个默认函数。
用户没有显示实现时,编译器会生成一个赋值运算符重载,以逐字节方式的拷贝。(注:内置类型成员变量是直接赋值,而自定义类型成员变量需要调用对应赋值运算符重载来完成相应的赋值)
四,const成员
将“const”修饰的“成员函数”称为const成员函数,当const修饰成员函数,实际修饰成员函数隐含this指针,说明不能对该成员函数成员进行任何改动。
取地址操作符及const取地址操作符重载
这两种操作符只有在特殊情况下使用,比如:当你不想让别人获取到指定的内容时。