10.类和对象
类是对象的抽象,对象是类的具体
定义类时使用关键字class,类不占用储存内存,对象占用储存空间。
11.对象成员的访问
①通过对象名和成员运算符访问对象中的成员。
格式:对象名.成员名
int main()
{
Dog d1;
d1.age=1;
d1.speak();
return 0;
}
②通过指向对象的指针访问对象中的成员
int main()
{
Dog d1,*p;
p=&d1;
p->age=1;
p->speak();
return 0;
}
12.内联函数
关键字inline
内联函数,编译时将函数体代码和实参代替函数调用语句。
内联函数属于是类内定义,但是不是所有类内定义都是内联函数。
13.类外定义
①同文件类外定义
②分文件类外定义
14.一个C++程序是由三个部分组成
①类声明头文件(后缀为.h或无后缀)
②类实现文件(后缀为.cpp),包括类成员函数的定义
③类的使用文件(后缀为.cpp),即主文件
15.内存分区
①栈区:int x=0;char *p=NULL;
②堆区:int *p=new int[20];
③全局区:存储全局变量及静态变量
④常量区:string str =“hello”;
⑤代码区:存储逻辑代码的二进制
✳:堆向高地址方向生长,栈向低地址方向生长
16.对象结构
✳ 同一类的不同对象的数据成员的值一般是不同的,而不同对象的函数的代码是相同的,不论调用哪一个对象的函数的代码,其实调用的都是同样内容的代码。
17.对象初始化
①有且只有一次
②根据条件初始化
✳18.构造函数
①构造函数的规则和特点
构造函数在对象实例化时被自动调用
构造函数与类同名
构造函数没有返回值
构造函数可以有多个重载形式
实例化对象时仅用到一个构造函数
当用户没有构造函数时,编译器会自动生成一个构造函数
19.默认构造函数
默认构造函数:在建立对象时不必给出实参的构造函数。
无参构造函数属于默认构造函数。
✳一个类只能有一个默认构造函数;也可以没有默认构造函数,有别的构造函数也可以实例化对象。
20.成员的初始化次序
①三种初始化方法
就地初始化
构造函数初始化
在构造函数体中为成员赋值(注意:这个不是初始化,而是赋值。)
②执行次序
就地初始化 > 初始化列表 > 在构造函数体中为成员赋值
③哪个起作用
在构造函数中为成员赋值 > 初始化列表 > 就地初始化