文章目录
前言
上一篇文章,我向大家讲述了类和对象(上)。这一期我将向大家介绍类和对象(中)。通过这一篇文章希望大家对构造函数、析构函数、拷贝构造函数和运算符重载函数能够有新的理解。
一、构造函数
1.构造函数的概念
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象的时候编译器自动调用,并且在对象整个生命周期内只调用一次。
2.构造函数的作用
构造函数的作用是在创建对象的时候,完成对对象初始化的工作。
3.构造函数的特点
1.函数名与类名相同
2.构造函数无返回值
3.支持重载
4.对象实例化时编译器自动调用相应的构造函数。
5.如果类中没有显示定义构造函数,编译器会自动生成默认的无参构造函数,一旦用户显示定义,编译器将不再生成。
6.构造函数对于对象的成员变量中的内置类型不做任何处理,对于自定义类型会调用相应的构造函数。
对于上面的6点特点:我将通过例子向大家一一介绍。
class Date
{
public:
//无参构造函数
//函数名与类名相同,无返回值
//你会发现当你将默认的无参构造函数,注释掉,代码还是可以运行的
//因为类中无显示定义的构造函数,编译器会自动生成一个默认的无参构造函数
//Date()
//{
//}
/*Date(int year,int month,int day)
{
_year = year;
_month = month;
_day = day;
}*/
//当你在类中显示定义构造函数,默认的无参构造函数将不会再生成了
void Print()
{
cout << _year << " - " << _month << " - " << _day << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;//注意:不能这样写Date d1();
d1.Print();
return 0;
}
对于第6点再写一个构造函数来辅助理解。
class Time
{
public:
Time()
{
cout << "Time" << endl;
}
private:
int _hour;
int _minute;
int _second;
};
class Date
{
public:
Date(int year = 0,int month = 1,int day = 1)
{
_year = year;
_month = month;
_day = day;
}
void Print()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year;
int _month;
int _day;
Time t1;
};
int main()
{
Date d1;//创建对象d1
Date d2(2025, 1, 12);//创建对象d2
d1.Print();
d2.Print();
return 0;
}
输出结果分析:创建对象的时候,会自动调用相应的构造函数。
创建d1对象,对于内置类型(int char double …)不做任何处理,但是对于Time自定义类型,会调用其构造函数,所以会打印出Time。d2同理。
小技巧
标签:函数,对象,析构,Date,拷贝,构造函数 From: https://blog.csdn.net/2301_81339084/article/details/145092934