一.目录
1.对象的相关知识
2.类的定义
3.类的实例化
4.类对象模型
5.模拟实现offsetof宏
6.this指针
二.正文
1.对象的相关知识
C语言是面向过程的,关注的是过程,分析求解问题的步骤,通过函数调用逐步解决问题。
C++是面向对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成。
对象:任何一个对象都应该具有两个要素,即属性和行为,对象是由一组属性和行为构成的。如现实生活中的手机就是一个对象,它的属性就是生产厂家,配置,颜色等等,行为就是它的功能。在一个系统中的多个对象之间通过一定的渠道相互联系,如下图:
 在C++中,每个对象都是由数据和函数(即操作代码)这两部分构成的,数据体现了属性,函数就是对数据进行操作的,以便实现某些功能。(通过三角形这个对象的边长,通过数学公式(函数)计算出三角形的面积(实现功能)。
  在C++中,每个对象都是由数据和函数(即操作代码)这两部分构成的,数据体现了属性,函数就是对数据进行操作的,以便实现某些功能。(通过三角形这个对象的边长,通过数学公式(函数)计算出三角形的面积(实现功能)。
2.类的定义
C语言中,结构体中只能定义变量,在C++中,结构体中不仅可以定义变量,还可以定义函数。
C++中的类就是将对象的属性和行为结合在一块,通过访问权限将接口提供给外部用户使用,也就是类的封装属性,用户不需要知道具体的实现方法,进而提高了数据的安全性。
类的访问限定符:
public(公有):修饰的成员变量在类外也可以被直接访问
protected(保护):在类外不能被直接访问
private(私有):在类外不能被直接访问
类访问限定符的作用域从该访问限定符出现的位置到下一个访问限定符出现时为止
注意:在C++中,为了兼容C语言的一些特性,struct的功能和C语言相同,但增加了新的功能,即可以在struct中定义函数,struct和class相同,struct默认成员为public,private不加访问限定符时默认成员为private。
访问限定符只在编译期间有作用,当数据 映射到内存的时候没有任何访问限定符上的区别
类的具体实现:
(1)关键字:class
(2)用法:class [classname],{}为类的主体,注意类定义结束后的封号
1 class Student 2 { 3 void TestFun(){//成员函数4 } 5 int a;//成员变量6 };
类的两种定义方法:
(1)声明和定义都放在类体中,注意:如果成员函数在类体中,则编译器在编译期间会将类的成员函数当做内联函数展开(不会在Debug版本下展开,而在发布版本中展开)
1 class Student 2 { 3 public: 4 int Add(int math, int english){ 5 score=math+english; 6 cout<<a<<" "<<name<<" "<<endl; 7 } 8 public: 9 int score; 10 char *name; 11 };

