类中的特殊成员函数

qlc23333 / 2023-05-03 / 原文

为了实现类中数据成员的初始化,销毁,对象之间的复制,赋值,移动等操作,在类中设计了一些特殊成员函数

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>.未自定义拷贝函数时,编译器会为类自动生成一个拷贝函数