一.类的结构和使用
学过C的我们都知道结构体,而类算是结构体的升级版.c是面向过程编程,c++则是面向对象编程,这两者的区别可从类中发现,类里可以包含函数的的声明和定义
同时类内部可以用类后面生命的变量,用起来比结构体舒服不少
类内部包含三种限定符,分别是保护,共有,私有 这几种修饰是针对外部而言的,不针对类内部,类内可以随意访问。类的默认访问权限是私有的,结构体的权限是公有,这是为了适应c语言。
二.类的储存
类其实有三种储存方式。比较常用的是第三种
1.成员和变量分别存放,这种方式非常浪费空间,因为假设创建多个实例,就会把相同的函数储存多次造成空间浪费。
2.函数存放在一个单独的类成员函数表,变量和函数地址存放在一起
3.只保存成员变量,所有函数放在公共代码区,编译链接的时候去公共代码区找到对应函数的地址再call,这种方法也是常用的
注意一点,类的储存和结构体一样有内存对齐的问题。
三.构造函数
构造函数的出现是为了解决初始化的问题,每次当我们想调用一个函数比如说链表或者顺序表都要初始化,难免会出现忘记初始化的问题。而构造函数就可以百分百初始化。
构造函数的函数名和类型名是一样的,它本身是一种特殊的函数,不能当作一般函数对待。没有返回值也不用写void.如果用户没有写构造函数的话编译器会自己生成一个。构造函数单纯就是为了初始化用的,一般搭配缺省参数使用
四.默认生成的构造函数
如果我们自己写了构造函数,系统就不会生成构造函数。系统默认生成的构造函数有个特点,对内置成员类型不做处理,对自定义成员类型调用它本身的构造函数。这点其实饱受诟病。非常的不便利