
点击蓝字 关注我们

第三节 构造函数&析构函数

构造函数是一种特殊的成员函数,用于初始化类的对象。构造函数的名称与类名相同,没有返回类型,并且可以有参数。构造函数在对象创建时自动调用,负责初始化对象的数据成员,为对象分配资源,并执行必要的初始化操作。
构造函数主要有两种类型:默认构造函数和带参数的构造函数。
默认构造函数
1.默认构造函数是没有参数的构造函数。如果在类定义中没有显式提供构造函数,C++会自动生成一个默认构造函数。
2.如果你自己提供了构造函数,但没有提供默认构造函数,那么在创建对象时必须提供构造函数所需的参数。
class MyClass {public:默认构造函数MyClass() {构造函数的初始化操作}};
带参数的构造函数
带参数的构造函数接受一个或多个参数,用于初始化对象的数据成员。这样的构造函数允许在创建对象时传递参数。
class Point {private:int x, y;public:带参数的构造函数Point(int xCoord, int yCoord) : x(xCoord), y(yCoord) {// 构造函数的初始化操作}};
构造函数的重载
你可以在同一个类中定义多个构造函数,称之为构造函数的重载。重载的构造函数根据参数的不同进行调用。
class Rectangle {private:int width, height;public:// 默认构造函数Rectangle() : width(0), height(0) {}// 带参数的构造函数Rectangle(int w, int h) : width(w), height(h) {}};
复制构造函数
复制构造函数是一种特殊的构造函数,用于创建一个新对象,该对象是通过使用同一类的另一个对象进行初始化的。
class MyClass {public:// 复制构造函数MyClass(const MyClass& other) {// 执行复制构造的初始化操作}};
构造函数确保对象在创建时处于一个良好的状态,以便后续的操作可以正确执行。构造函数在对象创建时自动调用,不需要手动调用。
析构函数
析构函数是一种特殊的成员函数,用于在对象被销毁时执行清理工作。析构函数的名称与类名相同,前面加上一个波浪号 ~,没有返回类型,也不接受任何参数。
在对象生命周期结束时(例如,当对象超出范围、程序结束或使用 delete 关键字释放动态分配的内存时),析构函数会自动被调用。析构函数通常用于释放资源、关闭文件、释放内存等清理操作。
#include <iostream>using namespace std;class MyClass {public:// 构造函数MyClass() {cout << "Constructor called!" << endl;}// 析构函数~MyClass() {cout << "Destructor called!" << endl;}};int main() {{// 创建一个对象MyClass obj;// 对象在此代码块结束时销毁,调用析构函数}// 对象已销毁,离开 main 函数时程序结束,调用析构函数return 0;}
构造函数&普通函数
1.目的:
构造函数:用于初始化类的对象。它们在对象创建时被自动调用,确保对象在创建时具有合适的状态。
普通函数:用于执行一般的操作。它们需要显式调用。
2.返回值:
构造函数:没有返回值。构造函数的主要目的是初始化对象,而不是返回值。
普通函数:可以有返回值,用 return 语句指定。
3.命名规则:
构造函数:构造函数的名称必须与类的名称相同,没有返回类型,并且不能被显式调用。
普通函数:可以有任意的名称,需要显式调用,并且有返回类型。
构造函数和析构函数两者一起工作,确保对象在创建和销毁过程中的正确行为。
END
往期推荐




