类的六个默认成员函数总结(一)

类有六个默认成员函数~
这里写图片描述

                     **今天我们来看一下前三个~**

一、构造函数
什么是构造函数呢??
看下图:
这里写图片描述

如图:构造函数的特性有:
1.函数名与类名相同;
2.没有返回值;
3.有初始化列表(可以不用)
4.新对象被创建,由编译器自动调用,且在对象的生命周期内仅调用一次
5.构造函数可以重载,实参决定了调用哪个构造函数
6.如果没有显示定义时,编译器提供一个默认的构造函数
7.无参构造函数和带有缺省值的构造函数都认为是缺省构造函数,并且缺省构造函数只有一个
8.构造函数不能用const来修饰

二、拷贝构造函数

定义:只有单个形参,并且该形参是对本类类型对象的引用(常用const修饰)

public:
    CDate()
    {}

    CDate( int year,int month,int day)
        :_iyear(year)
        , _imonth(month)
        , _iday(day)
    {
        _iyear = year;
        _imonth = month;
        _iday = day;
    }
    CDate(const CDate& date)//拷贝构造函数
    {
        _iyear = date._iyear;
        _imonth = date._imonth;
        _iday = date._iday;
    }
private:
    int _iyear;
    int _imonth;
    int _iday;
    int a;
};

结合代码,可以看出拷贝构造函数的特征有:
1.拷贝构造函数是构造函数的重载;
2.拷贝构造函数的参数必须使用同类类型对象的引用传递
3.如果没有显示定义,系统会自动合成一个默认的拷贝构造函数,默认的拷贝构造函数会一次拷贝类的数据成员完成初始化;

    void FunTest(const CDate date)//传值方式作为函数的参数
    {}
    CDate FunTest1()
    {
        CDate d;
        return d;//传值方式作为函数返回值
    }
    CDate d1(1990, 12,2);
    CDate d2(d1);//对象实例化对象

三、析构函数
功能:在对象被销毁时,由编译器自动调用,完成类的一些资源清理和汕尾工作

class CDate
{
public:
    void FunTest(int _year,int _month,int _day)
    {
        this->year = _year;
        this->month = _month;
        this->day = _day;
    }

    void Print()
    {
        cout << year<< endl;
    }
    ~CDate()
    {
        cout << "~CDate()" << endl;
    }
private:
    int year;
    int month;
    int day;
};
int main()
{
    CDate d1;
    d1.FunTest(1995,12,2);
    d1.Print();
    return 0;
}

这里写图片描述
析构函数的特性:
1.析构函数在类名(即构造函数名)加上~
2.析构函数没有返回值没有参数
3.一个类有且只有一个析构函数
若未显示定义,系统会默认生成缺省的析构函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值