🎈个人主页:库库的里昂
✨收录专栏:C++从练气到飞升
🎉鸟欲高飞先振翅,人求上进先读书。
目录
⛳️推荐
一、面向过程和面向对象初步认识
二、类的引用
1. C语言版
2. C++版
三、类的定义
类的两种定义方式:
四、类的访问限定符及封装
1. 类的访问限定符
2. 封装
五、类的作用域
六、类的实例化
七、类对象模型
1. 计算类对象的大小
2. 结构体内存对齐规则
八、this指针
1. this指针的引出
2. this指针的特性
3. this指针存在哪里?
4. 经典面试题:this指针可以为空吗?--可以但要视情况而定
⛳️推荐
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站
一、面向过程和面向对象初步认识
- C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
- C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
二、类的引用
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。
比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数
1. C语言版
结构体中只能定义变量,并且声明栈类型的变量时,必须写全struct Stack。
typedef int DataType; struct Stack { DataType* _array; size_t _capacity; size_t _size; }; struct Stack s;//声明一个结构体变量
2. C++版
C++中,struct结构体升级成了类,它里面不仅可定义变量,还可以定义函数,并且声明栈类型变量的时候,可以不加struct。声明的变量可以通过.去调用类里面的函数。
#include using namespace std; //C++兼容C语言,结构用法可以继续使用 //同时struct也升级成了类 struct Stack { //成员函数 void Init() { a = nullptr; top = capacity = 0; } void Push(int x) { //... } //成员变量 int* a; int top; int capacity; }; int main() { Stack st2;//C语言是不允许这样定义结构体但是C++可以 st2.Init();//调用类里面的函数 st2.Push(1); st2.Push(2); st2.Push(3); st2.Push(4); return 0; }
三、类的定义
class className { // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。类的两种定义方式:
1. 声明和定义全部放在类体中
//定义一个人的类 class Person { public: //成员函数——显示基本信息 void showInfo() { cout
- C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。