构造函数的作用_C++之构造函数和析构函数

本文介绍了C++中构造函数和析构函数的重要作用,它们用于对象的初始化和清理,确保安全。构造函数在创建对象时初始化成员属性,析构函数在对象销毁前进行清理。两者均由编译器自动调用,且不可手动调用。同时,文章提供了构造和析构函数的语法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1a074c2ebb367920ee51c7d7702747c7.png

对象的初始化和清理

  • 生活中我们买的电子产品基本上都有出厂设置,在某一天我们不用的时候也会删除一些自己的信息数据来保证安全
  • C++中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置

构造函数和析构函数

对象的初始化和清理也是两个非常重要的安全问题

一个对象或者变量没有初始化状态,对其使用的后果未知

同样的使用完一个对象或变量,没有及时清理,也会造成一定的问题

C++则利用来构造函数和析构函数来解决以上问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。

对象的初始化和清理工作编译器强制要我们做的事情,因此如果我们不提供构造函数和析构函数,编译器会提供默认是空实现的构造函数和析构函数。

  • 构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用。
  • 析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。

构造函数的语法

类名(){}

  1. 构造函数,没有返回值也不写void
  2. 函数名称与类名相同
  3. 构造函数可以有参数,因此可以发生发生重载
  4. 程序在调用对象时候会自动调用构造函数,无须手动调用,而且只会调用一次

析构函数的语法

~类名(){}

  1. 析构函数,没有返回值也不写void
  2. 函数名称与类名相同,在名称前加上符号~
  3. 析构函数不可以有参数,因此不可以发生重载
  4. 程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次

构造函数和析构函数的示例代码如下:

#include <iostream>
using namespace std;

// 对象的初始化和清理
// 1. 构造函数 进行初始化操作

class Person
{
private:
    /* data */
public:
    // 构造函数,没有返回值也不写void
    // 函数名称与类名相同
    // 构造函数可以有参数,因此可以发生发生重载
    // 程序在调用对象时候会自动调用构造函数,无须手动调用,而且只会调用一次
    Person();

    // 析构函数,没有返回值也不写void
    // 函数名称与类名相同,在名称前加上符号~
    // 析构函数不可以有参数,因此不可以发生重载
    // 程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次
    ~Person();
};

// 构造函数调用
Person::Person(/* args */)
{
    cout << "Person 构造函数的调用" << endl;
}
// 析构函数调用
Person::~Person()
{
    cout << "~Person 析构造函数的调用" << endl;
}

// 构造函数和析构函数是必须有的实现,如果自己不提供,编译器会提供一个空实现
void test01()
{
    Person p;   // 在栈上的数据,函数执行完后,会释放这个对象
}

int main(int argc, char const *argv[])
{
    test01();
    return 0;
}

以上是C++构造函数和析构函数的介绍,如果觉得有用,欢迎关注点赞,谢谢^ _ ^。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值