欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-29 09:29:03
...

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

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

一、构造函数
什么是构造函数呢??
看下图:
类的六个默认成员函数总结(一)

如图:构造函数的特性有:
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.一个类有且只有一个析构函数
若未显示定义,系统会默认生成缺省的析构函数

相关标签: class

上一篇: EM算法在GMM中应用

下一篇: BFC