C++:构造函数与析构函数

一、对象的特征

●构造函数与析构函数

类似于手机需要有出厂设置,出厂设置会将最基本的东西进行初始化,保证后续的使用.------------------>构造

当你需要处理手机时,需要将你以前所有使用过的记录清理调用. --> ---------------------------------------------析构---

1、构造函数:

对成员属性进行初始化的函数,未初始化的属性值是未知,使用有危险性。

2、析构函数:|

在对象销毁之前,将对象中的成员属性进行释放(清理).

●构造函数

(1)编译器会自动进行调用,不需要手动调用.(编译器强制要求必须调用构造)

(2)如果代码中没有构造函数,则编译会自动提供(空实现! )

(3)构造函数定义方式:

1、 函数名与类名一致

2、函数没有返回值,也没有void

3、可以用参数,可以重载

(4)调用时机:在实例化一个新对象时,构造函数会自动调用.

(5)构造函数分类:

(1)无参构造:函数没有参数;

{

     类名()

     {

}

}

在实例化对象时,如果对象没有参数,则调用该构造。

(2)带参构造;(构造函数可以设置一个或者多个参数)

{

       类名(<参数类型>  <参数名>………)

}

(3)拷贝构造:

●析构函数

(1)编译器会自动进行调用,不需要手动调用.(编译器强制要求必须调用析构)

(2)如果代码中没有构造函数,则编译会自动提供(空实现! )

(3)析构函数定义方式:

1、函数名与类名一致,但是在函数名前需要添加~符号,~类名()

2、函数没有返回值,也没有void

3、不能有参数,意味着不可以重载

(4)调用时机: ==在即将被对象被销毁之前,析构函数会自动调用,用于清理成员属性==

●定义方式:

~类名()

{

            释放堆空间上的成员属性。Delete

}

__________________________________________

代码:

#include <iostream>
using namespace std;

class Hero
{
public:
    Hero()
    {
        name=" ";
        attack=0;

        cout<<"构造函数"<<endl;

    }

    Hero(string name1)
    {
        name=name1;
        cout<<"带参数构造函数"<<endl;
    }

    ~Hero()
    {

        cout<<"析构函数"<<endl;
    }

    string name;
    int attack;
    
};
int main(int argc, char *argv[])
{
    Hero He1;    //构造函数
    Hero He2;    //析构函数
    Hero He3("tom");  //带参数构造函数

    cout<<He1.attack<<endl;
    cout<<He2.attack<<endl;
    cout<<He3.name<<endl;
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

এ᭄星辰

混口饭吃。。。。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值