使用=default生成默认构造函数 类名() = default; 该构造函数不接受任何实参,所以它是一个默认构造函数。定义这个构造函数的目的仅仅是因为我们既需要其他形式的构造函数,也需要默认
使用=default生成默认构造函数 类名() = default; 该构造函数不接受任何实参,所以它是一个默认构造函数。定义这个构造函数的目的仅仅是因为我们既需要其他形式的构造函数,也需要默认的构造函数。这个函数的作用完全等同于之前使用的合成默认构造函数。如果我们需要默认的行为,那么可以通过在参数列表后面写上=default来要求编译器生成构造函数。=default既可以和声明一起出现在类的内部,也可以作为定义出现在类的外部。如果=default在类的内部,则默认构造函数是内联的;如果在类的外部,则该成员默认情况下不是内联的。
类对象成员的类内初始化 最好的方式就是把这个默认值声明成一个类内初始值。类内初始值必须使用=的初始化形式或者花括号括起来的直接初始化形式。
委托构造函数 一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程,或者说它把它自己的一些(或者全部)职责委托给了其他的构造函数。一个委托构造函数也有一个成员初始值的列表和一个函数体。在委托构造函数内,成员初始值列表只有一个唯一的入口,就是类名本身。类名后面紧跟圆括号括起来的参数列表,参数列表必须与类中另外一个构造函数匹配。 当一个构造函数委托给另一个构造函数时,受委托的构造函数的初始值列表和函数体被一次执行。
constexpr构造函数 constexpr构造函数必须初始化所有数据成员,初始值或者使用constexpr构造函数,或者是一条常量表达式。
用string对象处理文件名 文件名既可以是库类型string对象,也可以是C风格字符数组。
array和forward_list容器