目录
1.类与对象的概念(重点)
类:类是对同一类对象的抽象总结,是一个概念。
对象:按照类的规定创建的实体。
程序员就是面向对象编程世界中的“上帝”,因此需要先写类的代码,才能按照这段代码创建对应的对象。参考类来创建对象的过程被称为“实例化”。因此,对象无法脱离对应的类存在。
一个类主要包括:
- 属性
用来描述对象的数据元素,通常是一个名词变量,例如:身高、体重、价格等,也称为“成员变量”或“数据成员”。
- 行为
用来描述对象执行的具体操作,通常对属性进行操作,以动词函数的方式存在,例如:吃饭、睡觉、运行等,也称为“成员函数”或“成员方法”。
成员变量和成员函数统称为“成员”。
2. 类的定义(重点)
【例子】以手机为例,来说明类的定义。
规定手机的属性:品牌、型号和重量
手机的成员函数:运行游戏、播放音乐、通信
#include <iostream> using namespace std; class MobilePhone // 帕斯卡命名法:所有单词的首字母大写 { public: // 公有权限:最开放的一种权限 string brand; // 品牌 string model; // 型号 int weight; // 重量 void run_game() // 运行游戏 { cout << "timi" << endl; } void play_music() { cout << "只因你太美" << endl; } void communicate() { cout << "你好" << endl; } }; int main() { return 0; }
3. 实例化对象(重点)
类是一个抽象的概念,因此需要按照这个概念创建对应的对象实体,C++中有两种类型的对象:
- 栈内存对象
在生命周期结束(所在的花括号执行完)后,自动被销毁。
栈内存对象使用 . 调用成员。
- 堆内存对象
需要使用new关键字创建,使用delete关键字销毁,如果不销毁,则会持续存在,容易导致内存泄漏的问题,内存泄漏最终可能会导致程序卡顿,甚至卡死。
堆内存对象通常使用指针来保存堆内存对象的地址。
堆内存对象使用 -> 调用成员,在Qt Creator下,直接打.会转换成 ->
#include <iostream> using namespace std; class MobilePhone // 帕斯卡命名法:所有单词的首字母大写 { public: // 公有权限:最开放的一种权限 string brand; // 品牌 string model; // 型号 int weight; // 重量 void run_game() // 运行游戏 { cout << "timi" << endl; } void play_music() { cout << "只因你太美" << endl; } void communicate() { cout << "你好" << endl; } }; int main() { // 栈内存对象 MobilePhone mp1; // 调用属性 mp1.brand = "小米"; mp1.model = "13 Pro"; mp1.weight = 216; cout << mp1.brand << " " << mp1.model << " " << mp1.weight << endl; // 调用成员函数 mp1.communicate(); mp1.play_music(); mp1.run_game(); // 堆内存对象 MobilePhone* mp2 = new MobilePhone; // 调用属性 mp2->brand = "红米"; mp2->model = "K60 Pro"; mp2->weight = 206; cout << mp2->brand << " " << mp2->model << " " << mp2->weight << endl; // 调用成员函数 mp2->communicate(); mp2->play_music(); mp2->run_game(); // 手动销毁mp2 delete mp2; // 有时销毁后还能使用部分功能,但是不要这么做 mp2 = NULL; // 可以赋值为NULL防止delete后调用 return 0; } // 主函数执行完,mp1销毁