目录
一、类和对象的引入
C语言中我们写顺序表时,通常都是定义一个结构体,然后写一系列函数来完成对应操作,但每次调用函数都要有一个结构体指针做参数,每次写函数都要写它,这让我们觉得很繁琐,于是C++就出现了类和对象,我们从关注过程到关注对象,我们可以把函数和变量一起放在一个 struct 里面,让顺序表成为一个类,每次使用时就调用它,就能完成一系列操作。
C语言时期的代码:
1、结构体要typedef
2、每个函数都有SL* s 这个参数
C++引入类和对象,我们可以把它们放在一个 struct 下面构成整体使用
1、不用写SL* s,函数可以直接访问这个类里面的成员变量
2、struct 结构体的类型名从 struct SeqList 变成了 SeqList 不用加前面的struct
3、函数名更加精炼,可以把前面的SeqList省略,因为已经是一个整体了,不用加前缀标识。
整体更加清晰美观。
二、访问限定符
在类里面可以用访问限定符来划分区域,共有三种,分别为
1、public 表示可以在类外面被访问(公有)
2、private 表示类外面不可访问,只有类里面才可以(私有)
3、protect 与 private 类似,在继承时才有不一样
访问限定符的作用域是在本限定符到下一个限定符之间,若没有下一个,则到类末尾。
如下,我们定义类时一般把成员变量设为私有,把函数设为公有,让别人调用函数就能完成操作,把底层封装起来,更加安全。
三、class
虽然用struct也可以定义类,但在C++中,我们更习惯用class来定义类,struct和class的唯一区别是struct默认是公有的(public),class默认是私有的(private)
写class类的习惯是把成员变量写在下面,函数方法写在上面。并且在成员变量名前加_。
在类里面成员变量和各个函数之间不用考虑顺序,可以直接访问。
例:
我们想要使用类里面的函数就先实例化出一个对象,再用 对象.函数名(参数) 调用函数完成操作。
注:只有公有才能在类外访问。
用上例类来实现:
执行结果如下:
访问私有:
四、类里面的声明与定义分离
1、在类里面定义的函数默认是 inline 内联函数
2、声明与定义分离的函数只要在定义时在函数名前面加上 类名:: 就可以了。
--------------------------------------------------------------------------------------------------------------------------------
执行结果如下 :
五、类的大小
一个类的大小就相当于C语言中结构体的大小,只算成员变量,不考虑函数。
因为一个类可能有无数个实例对象,若每个对象大小都包括函数,那将会很大。
执行结果如下:
详情计算规则请看:自定义类型详解_要努力学习ψ(`∇´)ψ的博客-CSDN博客
当类里面没有成员变量时,大小不为0,为1。因为要开一个字节空间证明它存在。
六、this指针
为什么在类里面成员变量和各个函数之间不用考虑顺序,可以直接访问呢?
因为在每个函数里面有一个默认参数 this指针 它可以帮助我们拿到对应的成员变量。
this指针不可被修改。
这里我们可以打印_a的值是因为print函数前面还有一个默认的参数example* this
_a 会被识别成 this->_a; e.print()会被识别成 e.print(&e);
这是编译器做的事情,我们写全会报错!
感谢大家观看!!!( •̀ ω •́ )✧