this与成员函数
调用成员函数时,可以认为编译器先用某个对象初始化了this指针,然后在this的指向下,隐式的调用这个对象的成员函数。
this总是指向这个对象,this天生就是常量指针,不可以修改this保存的地址
可以通过在成员函数形参列表之后加上const来声明常量成员函数,常量对象只能调用常量成员函数,设置常量成员函数的实质是把常量指针this设置成了指向常量的常量指针this

类作用域和成员函数
编译器总是先编译成员的声明,再编译成员函数体,所以成员的顺序不会影响成员函数的使用

构造函数初识
构造函数没有返回类型,不能被声明为const,当创建某个类的某个const对象时,要先经过构造函数的初始化,再给对象赋予const属性,所以构造函数可以在const对象的构造时给它赋值

默认构造函数
编译器在发现类内没有任何构造函数时,会给予合成的默认构造函数帮助初始化,默认构造函数会对有初始化值的进行那个值的初始化,无初始化值的执行默认初始化(内置类型设为0,其他类型根据类型决定)
定义在块内的内置类型或复合类型被默认初始化,会造成未定义,这种情况要避免
若类中包含其他类的成员且这个成员没有默认构造函数,则编译器无法对类合成默认构造函数

使用11标准的default
直接将default赋值给构造函数,可以使编译器进行默认构造,且可以在类内外使用

构建函数初始值列表
可以为新创建的对象的一个或几个成员属性赋值,没经过初始化列表赋值的会进行类内初始值的初始化(如果编译器支持),若不支持类内初始值,只能在函数体内进行初始化
class Person
{
    Person(const std::string &s):name(s)
    {
    
    }
};