21xrx.com
2024-11-22 06:58:34 Friday
登录
文章检索 我的文章 写文章
C++ 的构造函数和析构函数
2023-06-28 02:36:09 深夜i     --     --
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++ 中面向对象编程的重要概念,我们必须学会使用它们来管理对象的生命周期,并确保对象在被创建和销毁时的必要操作得到执行。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复