设计模式之美学习笔记

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

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

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

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

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

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

3.抽象类和接口的区别

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

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

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

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

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

下面是cpp内的知识

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

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

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

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

相关推荐
故事还在继续吗5 分钟前
设计模式完全指南
设计模式
tq108614 分钟前
程序行为的效应构成:约束、规则与延迟固化的统一视角
笔记
Alice-YUE17 分钟前
前端图片优化完全指南:从格式到加载的全面提速方案
前端·笔记·学习
沉默-_-25 分钟前
备战蓝桥杯-哈希
c++·学习·算法·蓝桥杯·哈希算法
我想我不够好。32 分钟前
监控学习 4.28 1.5 hour
学习
Stella Blog33 分钟前
狂神Java基础学习笔记Day05
java·笔记·学习
枷锁—sha40 分钟前
【CTFshow-pwn系列】03_栈溢出【pwn 073】详解:静态编译下的自动化 ROP 链构建
网络·汇编·笔记·安全·网络安全·自动化
Alice-YUE42 分钟前
前端性能优化完全指南:从指标到实战
前端·学习·性能优化
薛定谔的悦1 小时前
共享数据总线(DPR)设计模式——嵌入式系统的“内存数据库”
jvm·数据库·设计模式
你数过天上的星星吗1 小时前
Python学习笔记二(函数、类与对象)
笔记·python·学习