设计模式之美学习笔记

1.面向对象编程和面向对象编程语言

面向对象编程是指以类和对象作为代码的组织单位,面向对象编程语言是指有类和对象,并且有支持面向对象的封装、抽象、继承、多态的编程语言。

除了面向对象编程还有面向过程编程和函数式编程。面向对象编程语言编写的不一定是面向对象的代码,面向过程语言编写出来的也有可能是面向对象风格的代码。

2.面向对象风格的代码写出来却是面向过程风格的情况

不管是否需要,给类都提供get、set,这相当于提供了外部访问的内容。

面向过程的代码在小范围的数据处理,小范围的代码时不一定必须被改成面向对象的代码也可能更有优势。

3.抽象类和接口的区别

抽象类和接口的区别是抽象类可以有属性、对于方法可以有自己的实现,但是接口,只有方法且不能自己实现,那些显示继承的才是实现抽象类,而那些实现了接口方法的类自动成为接口的一个实现。

抽象类和子类是一种is a的风格,而接口和实现是一种has a的关系。

4.面向对象的四大特性:封装、抽象、继承、多态

抽象在有时不被称为面向对象特有的特性,因为函数本质上也是一种抽象,把一系列的操作抽象成一个函数名和参数的处理,而面向过程的代码内有很多函数。

封装是指只暴露部分属性给外部访问,通过访问控制权限,继承是指子类对父类代码的复用,实际上也可以通过组合来实现,多态是用子类重写父类的实现。

下面是cpp内的知识

1.cpp的空类大小是1字节:即使是空类也占用一字节的大小是为了避免多个空类对象,而因为没有大小,这些对象没有办法区分,都在同一个位置

除此之外类还有字节填充,比如类的大小是最大成员变量大小的整数倍。

2.虚函数是通过虚函数表和虚函数表指针vptr实现的,使用虚函数表可以实现不同的类有自己实现的虚函数,且虚函数和普通函数一样不占据类的大小,有虚函数的类会有虚函数表指针的内存使用。

3.虚继承下有虚继承表的存储使用

相关推荐
xieliyu.1 天前
大一自学 Java:SE 阶段学习总结
学习
Terry Chu1 天前
WordPress 完全教程:从入门到进阶(2026 最新版)
学习·学习方法
迷路爸爸1801 天前
Docker 入门学习笔记 07:用一个多服务案例真正理解 Docker Compose
运维·笔记·学习·spring cloud·docker·容器·eureka
妙蛙种子3111 天前
【Java设计模式 | 创建者模式】 抽象工厂模式
java·开发语言·后端·设计模式·抽象工厂模式
chh5631 天前
从零开始学C++--类和对象
java·开发语言·c++·学习·算法
HyperAI超神经1 天前
【TVM教程】理解 Relax 抽象层
人工智能·深度学习·学习·机器学习·gpu·tvm·vllm
炽烈小老头1 天前
【每天学习一点算法 2026/04/07】快乐数
学习·算法
计算机安禾1 天前
【数据结构与算法】第31篇:排序概述与插入排序
c语言·开发语言·数据结构·学习·算法·重构·排序算法
Larry_Yanan1 天前
Qt+OpenCV(一)环境搭建
开发语言·c++·qt·opencv·学习
YangYang9YangYan1 天前
2026年经管专业学习数据分析的指南
学习·数据挖掘·数据分析