类的六个默认成员函数总结(一)
程序员文章站
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.一个类有且只有一个析构函数
若未显示定义,系统会默认生成缺省的析构函数
上一篇: EM算法在GMM中应用
下一篇: BFC
推荐阅读
-
C++ 学习笔记(五)类的知识小结一(重载,友元函数,静态成员,new)
-
VC++中多线程学习(MFC多线程)一(线程的创建、线程函数如何调用类成员呢?如何调用主对话框的成员?、MFC中的工作线程和界面线程的区别)
-
C++中类的默认成员函数详解
-
种的成员可以用另一个类来声明么,对这个成员的赋值度需要this函数这样么
-
类的六个默认成员函数总结(一)
-
成员函数-关于实例化一个类时占用的内存大小问题
-
种的成员可以用另一个类来声明么,对这个成员的赋值度需要this函数这样么
-
php中一个种访问另一个类中的成员函数的方法
-
类的成员可以用另一个类来声明么,对这个成员的赋值度需要this函数这样么
-
php中一个类访问另一个类中的成员函数的步骤