C++面向对象编程:从封装到实战
一、面向过程 VS 面向对象1. 面向过程之前全部所学核心步骤化、流程驱动先做什么、再做什么函数独立零散。适合简单小程序、逻辑简单场景。2. 面向对象C 核心核心万物皆对象封装整体将「数据 操作数据的行为」打包成一个整体 ——类。三大特性封装、继承、多态本篇吃透封装二、类与对象 核心概念类class抽象模板描述一类事物的共性包含成员变量属性 成员函数行为。对象类的具体实例通过类创建出来的实体一个类可以实例化无数个对象。通俗类比类 房子图纸对象 实际盖出来的每一套房子三、类的语法结构class 类名 { // 访问权限 访问修饰符: // 成员变量 变量定义; // 成员函数 函数声明/定义; };访问权限三大权限private私有仅本类内部访问默认权限public公有类内、类外、全局都能访问protected保护继承专用后续讲解四、最简类定义 对象实例化1. 定义一个 Person 类#include iostream #include string using namespace std; // 定义类 class Person { // 公有权限 public: // 成员变量属性 string name; int age; // 成员函数行为 void showInfo() { cout 姓名 name 年龄 age endl; } };2. 创建对象 调用成员int main() { // 方式1栈上实例化对象 Person p1; p1.name 张三; p1.age 18; p1.showInfo(); // 方式2多个对象互相独立 Person p2; p2.name 李四; p2.age 20; p2.showInfo(); return 0; }输出姓名张三 年龄18 姓名李四 年龄20五、封装的核心思想1. 为什么需要封装保护核心数据防止外部随意篡改统一接口访问代码更安全、易维护隐藏内部实现只暴露必要功能2. 标准封装写法成员变量私有化private提供公有 get/set 函数 读写数据封装标准模板class Student { private: // 私有成员外部无法直接访问 int id; double score; public: // set设置私有变量 void setId(int _id) { id _id; } void setScore(double _s) { // 可加数据校验防止非法值 if(_s 0 _s 100) { score _s; } } // get读取私有变量 int getId() { return id; } double getScore() { return score; } };3. 封装调用演示int main() { Student s; // s.id 1001; // 报错私有无法直接访问 s.setId(1001); s.setScore(92.5); cout 学号 s.getId() endl; cout 成绩 s.getScore() endl; return 0; }六、对象的两种创建方式栈对象常用、自动释放Person p;堆对象 / 动态对象new 创建手动释放Person* p new Person; p-name 王五; p-showInfo(); // 手动释放 delete p; p nullptr;对象指针访问成员使用-普通对象使用.七、类内函数 与 类外函数分离写法大型项目常用类内声明类外实现结构更清晰class Person { public: string name; int age; void work(); // 类内声明 }; // 类外实现加 类名:: 作用域 void Person::work() { cout name 正在工作 endl; }八、高频易错点class 默认权限为privatestruct 默认public私有成员直接在类外访问编译报错对象指针误用.、普通对象误用-堆对象忘记 delete造成内存泄漏未封装直接暴露所有成员不符合工程规范九、今日核心总结类是模板对象是实例C 面向对象基础三大访问权限public / private / protected封装核心变量私有函数公有数据安全可控对象访问普通对象.、对象指针-类外实现成员函数必须加类名::作用域限定符
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2551875.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!