在C++中有了个默认成员函数:
1.构造函数
2.析构函数
3.拷贝构造函数
4.赋值运算符重载
5.取地址符重载
6.const修饰的取地址符重载
介绍上述的成员函数之前先介绍在这写成员函数中会用到的两个概念:
1.函数重载
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数个数或数目不同。
2.缺省函数
缺省函数就是在声明函数的某个参数的时候指定一个默认值,在调用这个函数的时候,没有指定该参数值,则会用这个默认值。
缺省参数使用规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数,即:带缺省值的参数必须放在参数表的最后面。 缺省值必须是常量。缺省函数又分全缺省函数和半缺省函数。
一、构造函数
我们知道,当类中的成员变量为私有的时候,类外不能访问类中的私有成员,所以我们需要在类内定义一个函数,在类的对象实例化时有且仅有调用一次,对对象的各个成员进行初始化,这就是构造函数的作用。
构造函数的特点:
1.无返回值
2.函数名是类名
3.可以重载
4.可以在类内定义,也可以在类外定义
5.如果不写,会生成一个无参数的默认构造函数
6无参的构造函数和全缺省的构造函数都是缺省构造函数,且只能有1个
二、拷贝构造函数
1.拷贝构造是构造函数的一种重载
2.拷贝构造必须传对象的引用,否则将引发无穷递归!
3.不能任何时候都指望生成默认的用,要考虑到深浅拷贝的问题!
三、析构函数
1.函数名为类名前加~
2.无参数无返回值
3.只做清理工作
4.后定义的对象先析构,和栈类似!
5.一个类只有一个析构函数,未定义会生成缺省的析构函数。(缺省的构造函数)
四、赋值运算符重载
作用:为了支持自定义类型的运算
调用规则:d1 = d2----->d1.operator=(d2)
1 5个不能被重载的运算符很常考“.* 、:: 、?: 、sizeof 、 .”
2. 返回值用 类名&,一是为了满足连等需要,二是少一次拷贝构造
3. 检查是否有自己给自己赋值
4.返回*this
5.重载不能改变由县级及问题。不改变操作个数
有传统写法和现代写法,推荐现代写法
其它两个成员函数一般不用自己定义,编译器自行生成。