日志13

构析函数,分为构造函数析构函数,是 C++ 中用于管理对象生命周期的重要机制。以下是它们的定义和使用说明:

1. 构造函数 (Constructor)

定义:

  • 作用:在创建对象时自动调用,用于初始化对象。
  • 特点:名称与类名相同。没有返回值(甚至不能写 void)。可以被重载(通过参数列表区分)。支持默认参数。

示例代码:

#include <iostream>
using namespace std;

class MyClass {
public:
    int value;

    // 构造函数
    MyClass(int v) {
        value = v;
        cout << "Constructor called, value = " << value << endl;
    }
};

int main() {
    MyClass obj(10); // 自动调用构造函数
    return 0;
}

注意:

  • 如果用户未显式定义构造函数,C++ 提供一个默认构造函数(无参数,什么都不做)。
  • 当有多个构造函数时,称为构造函数的重载

2. 析构函数 (Destructor)

定义:

  • 作用:在对象生命周期结束时自动调用,用于清理资源(如内存释放、文件关闭等)。
  • 特点:名称为类名前加 ~。没有参数,也不能被重载。没有返回值。

示例代码:

#include <iostream>
using namespace std;

class MyClass {
public:
    int value;

    // 构造函数
    MyClass(int v) : value(v) {
        cout << "Constructor called, value = " << value << endl;
    }

    // 析构函数
    ~MyClass() {
        cout << "Destructor called, value = " << value << endl;
    }
};

int main() {
    MyClass obj(20); // 构造函数自动调用
    // 程序结束时,析构函数自动调用
    return 0;
}

注意:

  • 析构函数常用于释放动态分配的资源,避免内存泄漏。
  • 析构函数的调用顺序与构造函数的调用顺序相反(后构造的对象先析构)。

3. 构析函数的结合使用

当类中涉及动态分配资源时,构析函数尤为重要。

示例代码:

#include <iostream>
using namespace std;

class MyClass {
private:
    int* ptr;

public:
    // 构造函数
    MyClass(int v) {
        ptr = new int(v); // 动态分配内存
        cout << "Constructor: allocated memory for " << *ptr << endl;
    }

    // 析构函数
    ~MyClass() {
        delete ptr; // 释放内存
        cout << "Destructor: memory released" << endl;
    }
};

int main() {
    MyClass obj(30);
    return 0;
}

输出:

Constructor: allocated memory for 30
Destructor: memory released

小结:

  • 构造函数负责初始化,析构函数负责清理资源。
  • 动态资源管理时,析构函数是保证程序安全性的关键。
全部评论

相关推荐

虚闻松声:很顶的简历,不改也没啥问题。 两点建议 1. 细化项目经历。关于【负责内容】可以稍微再具体一些,重点项目可以写两三个大的模块,以列表形式展开。同时适当提一下项目最终的效果。 2. 适当精炼表达。课程写一行足矣;荣誉奖项,写成一两行吧;CET-6再加一句话就行了,4 没必要写 CV、求职等咨询,欢迎私信交流。
投递中科院自动化所等公司9个岗位 > 听劝,这个简历怎么改
点赞 评论 收藏
分享
02-18 21:55
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务