C++:类的设计————构造与析构函数及其动态内存管理

本文详细介绍了C++中类的构造与析构函数的作用,强调了自定义构造函数的重要性,特别是复制构造函数在初始化和函数按值传递对象时的使用。此外,还讨论了类型转换和转换函数的概念,以及如何通过`explicit`关键字避免意外的类型转换。最后,简要提及了动态内存管理的重要性。

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

构造与析构函数

1.构造与析构函数的意义

创建对象是往往需要初始化,但是对象不可以直接访问私有成员,因此C语言中直接赋值的初始化方法行不通,于是C++使用构造函数进行对象的初始化操作。
构造函数的原型声明在public中,名称与类名一致,即:

class class_name{
    private:
        ..
    public:
        class_name();

};

C++规定,如果程序员不自定义构造函数,会给出一个默认的构造函数(需要注明的是构造函数没有声明类型),默认的构造函数没有任何功能,还需要程序员添加相应的操作。
例如下面这个类:

class Bank
{
   
   
    private:
        int client;
        double money;
    public:
        Bank();//default
        Bank(int c,double m);
        ~Bank();
};
Bank::Bank()
{
    client = 0;
    money = 0.0;
}

注意到上述例子中,有Bank()的一个重载版本Bank(int c,double m),这也是一个构造函数,是程序员自定义的,带有参数列表,这样,我们在创建新的对象的时候,就可以这样写:

Bank bank1;//不初始化调用默认构造函数
Bank bank2(500,1000.0);//隐式的使用Bank(int c,double m)
Bank bank3 = Bank(200,50.0);//显式的使用Bank(int c,double m)

有意思的是,如果类的声明仅仅给出了Bank(int c,double m)而没有Ban

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值