C++ 类和对象
一 面向对象和面向过程
1.1 面向过程编程:
面向过程编程是一种基于步骤和过程的编程方法,就像按照菜谱做饭一样。你需要一步一步地描述每个具体的操作。
例子:制作一杯咖啡
- 煮水。
- 把咖啡粉放入滤纸。
- 将热水倒在咖啡粉上。
- 等待咖啡滴入杯子。
- 加入糖和牛奶(如果需要)。
- 搅拌均匀。
- 咖啡做好了。
在这个例子中,每一步都是一个独立的过程,程序按照顺序一步一步地执行这些过程,最终完成目标。
1.2 面向对象编程:
面向对象编程是一种基于对象和类的编程方法,就像在一个咖啡店中制作咖啡一样。每一个对象都有自己的属性和行为,你可以通过这些对象来完成任务。
例子:咖啡店制作一杯咖啡
- 定义“咖啡机”对象:它可以煮水、过滤咖啡、加热牛奶等。
- 定义“咖啡杯”对象:它可以装咖啡、加入糖和牛奶、搅拌等。
- 创建一个“咖啡师”对象:他知道如何操作咖啡机和咖啡杯来制作咖啡。
在这个例子中,“咖啡机”、“咖啡杯”和“咖啡师”都是对象,每个对象都有特定的属性(如咖啡机的水温、咖啡杯的容量)和方法(如煮水、搅拌)。通过这些对象的交互,最终完成制作咖啡的任务。
1.3 总结
面向过程编程(POP):专注于过程和步骤,类似于按照菜谱做饭,每一步都是具体的指令。
面向对象编程(OOP):专注于对象和交互,类似于咖啡店中的角色分工,每个对象都有自己的职责,通过对象之间的协作来完成任务。
二 类
2.1 类的引入:
C语言的结构体和C++的类有些许相似但是它里面只能定义变量,在C++的类中不仅可以定义变量而且还可以定义函数在里面
C:
typedef struct Stack { STDataType* a; int top; int capacity; }ST; void Init(int month , int year) { …… }
就比如这个用C语言写的栈,它里面就只能写变量名,函数其他的只能写在结构体外面然后我们再看用C++看它怎么写,看之前先得了解C++的定义
2.2 C++的定义:
class className// 类名 { // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号
C++:
#define _CRT_SECURE_NO_WARNINGS 1 #include #include #include using namespace std; class Date { void Init(int month, int date) { date = date; //_date = date; } int date; int month; //int _date; //int _month; }; int main() { Date myDate; myDate.Init(2, 3); return 0; }
C++就把它们封装成一个类,但你们是不是发现了一个问题,我想给变量赋值时怎么参数名和变量名一模一样,这是什么鬼?其实这是为了代码的可读性和一致性并且我们一般在变量前面加"_"
输出:
那为什么编译之后会显示找不到Init呢?我不是在类里面写了init嘛,原因就是class默认为private,struct为了兼容C才是public
那什么是private public呢?它就是我们接下来要讲的类的访问限定符及封装
三 类的访问限定符及封装
3.1 类的访问限定符:
C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择
性的将其接口提供给外部的用户使用
public:
当你希望某个类、属性或方法对所有其他代码可见时使用
例子:
#include using namespace std; class Date { public: void Init(int month, int date) { _date = date; _month = month; } void sprint() { cout