21xrx.com
2025-03-28 04:09:24 Friday
文章检索 我的文章 写文章
C++ 的构造函数和析构函数
2023-06-28 02:36:09 深夜i     7     0
C++ 构造函数 析构函数 对象 初始化

C++ 是一种面向对象的编程语言,它支持构造函数和析构函数的概念。构造函数用于初始化对象以及为对象分配内存空间,而析构函数则用于在对象被销毁时释放内存空间。

构造函数的定义通常包括参数列表和函数体,其名称与类名相同,并且没有返回类型。当创建一个对象时,构造函数会自动调用,代表对象的初始化过程。在构造函数中,可以为对象的成员变量赋初始值,并进行一些其他必要的操作。

例如,以下是一个简单的类 MyInt,其中包含一个 int 类型的成员变量,和一个构造函数:

class MyInt {
public:
  int value;
  MyInt() // 构造函数
    value = 0;
    cout << "MyInt 被创建" << endl;
  
};

在主函数中创建一个 MyInt 对象时,构造函数会被自动调用,并为 value 成员变量赋初始值 0:

int main()
  MyInt number; // 自动调用构造函数
  cout << number.value << endl; // 输出 0
  return 0;

和构造函数相反,析构函数用于在对象被销毁时进行清理工作,例如释放申请的内存空间或关闭已打开的文件。析构函数的定义和构造函数类似,其名称与类名相同,前面加上波浪线(~),没有参数和返回类型。在对象生命周期结束时,析构函数会自动调用。

以下是一个简单的类 MyString,其中包含一个 char 类型的字符串指针成员变量,和一个析构函数:

class MyString {
public:
  char *str;
  MyString(char *cstr) { // 构造函数
    str = new char[strlen(cstr) + 1];
    strcpy(str, cstr);
  }
  ~MyString() { // 析构函数
    delete[] str;
    cout << "MyString 被销毁" << endl;
  }
};

在主函数中创建一个 MyString 对象时,构造函数会被自动调用,为 str 成员变量申请内存空间,并将 cstr 参数复制到该内存空间中。在对象生命周期结束时,析构函数会被自动调用,释放 str 成员变量占用的内存空间:

int main() {
  MyString *str = new MyString("Hello World"); // 调用构造函数
  delete str; // 调用析构函数
  return 0;
}

总的来说,构造函数和析构函数是 C++ 中面向对象编程的重要概念,我们必须学会使用它们来管理对象的生命周期,并确保对象在被创建和销毁时的必要操作得到执行。

  
  

评论区

请求出错了