开篇先列一下本篇文章要解释的几个知识点
背景:我们知道,如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数。
本节剖析:
(1)如果没有显式定义,编译器真的会生成默认构造函数吗?
(2)在什么场景下,编译器会生成默认构造函数,什么场景下不会?
以一个简单的日期类来探索今天的主题
例1:
class Date
{
public:
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d;
return 0;
}
编译成功。我们并没有有显式地给出构造函数,但是对象也创建成功,所以。可以猜想:是编译器合成了一个默认构造函数。
例2:
class Time
{
public:
Time()
{
cout << "time()" << endl;
}
Time(int ho