类中的特殊成员函数
为了实现类中数据成员的初始化,销毁,对象之间的复制,赋值,移动等操作,在类中设计了一些特殊成员函数
1、构造函数
1.1、作用
为类内成员函数提供初始化值,在定义对象时自动被调用
1.2、定义
class_name(T1,T2……){}
例:
Point(double a,double b){x_ = a,y_ = b;}//定义
Point p(1,2);//调用
1.3、初始化列表
class_name(T1,T2……): 成员1(初始值),成员2(初始值)……{}
例:
Point():x_(0),y_(0){}
1.4、补充说明
<1>.未自定义构造函数时,编译器会为类自动生成一个构造函数,将全局编列和静态变量初始化为0
<2>.用new构建动态对像时,也调用构造函数
2、析构函数
2.1、作用
对象生存期结束后,c++自动调用析构函数删除对象分配的自由空间
2.2、定义
~class_name(){}
例:
~Point(){}
2.3、补充说明
<1>.未自定义析构函数时,编译器会为类自动生成一个析构函数
<2>.若有多个对象同时结束生存期,C++将按照定义他们相反的顺序调用析构函数
3、拷贝函数
3.1、作用
使用已存在的对象为新对象初始化,定义对象时调用
3.2 、定义
class_name(const class_name X){}
例
Point(const Point& a){x_ = a.x(),y_ = a.y();}//定义 Point p1(1,2),*p; Point p2(p1);//调用
3.3、补充
<1>.未自定义拷贝函数时,编译器会为类自动生成一个拷贝函数