C++类与对象归纳 曾经终败给现在 2024-04-17 22:57 19阅读 0赞 ### C++类与对象 ### * * 抽象 * 封装 * 继承 * 多态 ## 抽象 ## 面向对象方法中将一个问题抽象化,抽象为两部分即 **以描述人为例子** * 数据抽象 int age; // 年龄 int height; // 身高 int sex; //性别 * 行为抽象 > 我的理解在一个类中,数据抽象就是类的成员变量,行为抽象就是类的成员函数。 void eat() {}; //吃饭 void sleep() {}; //睡觉,人的行为描述 ## 封装 ## 封装就是将抽象的数据和行为结合起来,形成一个整体,即常说的“ **类** ”。 class Person { public: Person() {} void eat() {}//吃饭 void sleep() {} //睡觉,人的行为描述 public: int age; // 年龄 int height; // 身高 }; ## 继承 ## > **继承简单讲就是在原有基础上进行扩展和更详细的说明。** > 同样以人为例子,人可以根据职业划分为多种不同的情况,不同的情况对应着不同的数据和行为描述,如工人和学生。 > 从下面示例代码可以看到,工人和学生他们同属于人,但是工人有工作的行为,学生有学习的行为。但他们有共同的特征就是需要吃饭、睡觉。一旦工人Worker和学生Student继承了父类Person基类,那么基类拥有的信息他们都可同步获得。 继承的优势便是将父类的所有数据和行为(前题是public属性)可以直接通过继承获得,并可以在原有基础上进行扩展和详细描述。 class Person { public: Person() {} void eat() {}//吃饭 void sleep() {} //睡觉,人的行为描述 public: int age; // 年龄 int height; // 身高 }; class Worker: public Person{ public: Worker() {} void work() {} //工作 }; class Student : public Person { public: Student() {} void study() {} //学习 }; ## 多态 ## > 字面意思是“多种状态”,在C++中直接的表现就是在运行的时候根据情况选择不同的状态。在C++中,多态主要通过两种方式实现。 <table> <thead> <tr> <th>多态</th> <th>实现方式</th> <th>区别</th> </tr> </thead> <tbody> <tr> <td>静态</td> <td>重载、模板</td> <td>编译时确定</td> </tr> <tr> <td>动态</td> <td>虚函数、覆盖</td> <td>运行时确定</td> </tr> </tbody> </table> **1. 重载** > 重载主要指函数重载,**函数重载一般是指在同一作用域中同名函数参数类型不同,参数个数不同,参数顺序不同**。 **2. 模板** > 模板同样是多态的一种表现形式。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 template <typename T> T const& Max(T const& a, T const& b) { if(a > b) return a; return b; } **3. 覆盖** > 派生类中重新定义基类中的函数,函数名、参顺列表、返回值类型所有都必须同基类中被重写的函数一致,只有函数体不同。 > //重定义:派生类对基类函数重定义,派生类函数名与基类某函数同名。 **4. 虚函数** [C++虚函数][C] [C]: https://mp.csdn.net/mdeditor/100517008
还没有评论,来说两句吧...