1.类的定义
1.1 类定义格式
1.1.1class 为定义类的关键字,后接类的名字;类中的变量称为类的属性/成员变量;类中的函数称为类的方法/函数。(C++中struct升级为类,即struct中也可定义函数,这是类与struct的最大区别)
~*定义在类中的成员函数默认为inline*
~不需要像C中再typedef struct Node ....Node了,可以直接用Node
1.2 访问限定符
1.2.1class中 public: 修饰成员在类外可直接被访问
private: / protected: 修饰成员在类外不可直接被访问
*class定义成员没有被访问限定符修饰时默认为private,struct中默认为public
~且不需要typedef ListNodeCPP.....就可以直接表示类型,这里与struct不同
~用类将对象的属性和方法结合在一块,实现了一种封装(这是C++相较C的严谨性,其实也更方便调用了)通过 访问限定符 将其接口提供给外部用户使用(严谨性)
~在 C 中像取栈顶可以不调用他人写的函数,通过自己的代码访问(十分容易出错) 而C++中因为成员变量是私有的,仅能通过访问限定符,调用相应函数才完成像取栈顶这样的操作,杜绝了不规范操作带来的麻烦。
1.3 类域
~类定义了一个全新的作用域,在类外定义函数成员时(声明和定义分离),需要用 :: 作用域操作符 指明成员属于哪个类域
~编译器查找规则,先在全局中找,后再类域中找 (指定类域的情况)
2.实例化
2.1 对象大小:其中函数并不计入大小,其他成员变量符合内存对齐规则(没有成员变量的类大小为1,纯粹为了站位表示对象存在)
3.this指针(隐式传地址,方便)
3.1 编译器编译后类的成员函数默认会在形参的第一个位置,增加一个当前位置类类型的指针,即this指针。(类的成员函数访问成员变量,本质都是通过this指针访问的,如Init中的_year赋值:this->_year = year)
3.2 C++规定不能在形参和实参位置显示this指针,但是可以在函数体内显示使用this指针