在《C++中类的合成的默认构造函数2-1》和《C++中类的合成的默认构造函数2-2》中提到,如果类中没有显式地定义默认构造函数,则C++编译器会为其创造一个合成的默认构造函数,如果类中已经定义了其他格式的构造函数,此时C++编译器不会再为其合成默认构造函数。而定义类时,最好要定义其默认的构造函数。
1 使用default关键字定义默认构造函数
在C++11中,引入了default关键字来定义默认构造函数。
class MyStruct {
MyStruct() = default;
};
在以上代码中,通过default关键字定义了MyStruct类的默认构造函数。当然,也可以将其定义在MyStruct类之外。
class MyStruct {
MyStruct();
};
MyStruct::MyStruct() = default;
2 类内定义与类外定义的区别
将默认构造函数定义在类内部时,该函数是内联函数,当默认的构造函数定义在类的外部时,该函数不是内联函数。