5.5k5 分钟

# CSS 三大特性 # 层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式. 层叠性主要解决样式冲突的问题 层叠性原则: 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式 样式不冲突,不会层叠 div { color: red; font-size: 18px;}div { color: green;}/** * 执行后面的样式 * div { * color: green; * font-size: 18px; * } */# 继承性 CS
7.5k7 分钟

# Emmet 语法 # 简介 Emmet 语法的前身是 Zen coding,它使用缩写来提高 HTML/CSS 的编写速度。 # 快速生成 HTML 结构语法 生成标签:直接输入标签名,按 <kbd>tab</kbd> 键即可。比如 div 然后 <kbd>tab</kbd> 键, 就可以生成 <div></div> 。 如果想要生成多个相同标签 ,加上 * 就可以了。比如 div*3 就可以快速生成 3 个 div 。 如果有父子级关系的标签,可以用 >
5.9k5 分钟

# CSS 选择器 # CSS 基础选择器 基础选择器又包括:标签选择器、类选择器、id 选择器和通配符选择器 # 标签选择器 标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。 语法: 标签选择器 { 属性:属性值; ...} 作用:标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。 # 类选择器 如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器 语法: .类名 { 属性1: 属性值1; ..
10k9 分钟

# 基本结构标签 标签名 定义 说明 <html></html> HTML 标签 页面中最大的标签,称为根标签 <head></head> 文档的头部 注意在 head 标签中我们必须要设置的标签是 title <title></title> 文档的标题 让页面拥有一个属于自己的网页标题 <body></body> 文档的主体 元素包含文档的所有内容,页面内容基本上都是放到 body 里面的 # 常用标签 # 标题标签 标
21k19 分钟

# 标准模版库 Standard Template Library(STL),是一种高效且功能强大的 C++ 程序库,被纳入 C++ 标准库中,是 ANSI/ISO C++ 规范中最新且具有创新性的一部分。它包含了计算机科学中常用的基本数据结构和算法,为 C++ 开发者提供了一个可扩展的框架,体现了软件复用性。 STL 采用了泛型编程模式,与面向对象编程不同,它允许编写适用于多种数据类型的通用代码。这种模式通过抽象化数据类型,使用泛型代替具体类型,来实现代码的通用性。 STL 虽然复杂,但可以概括为六个主要组件:容器、迭代器、算法、适配器、函数对象和空间配置器。 容器:提供数据结
18k16 分钟

# RAII 技术 RAII(Resource Acquisition Is Initialization)是 C++ 中一种重要的资源管理技术,由 C++ 之父 Bjarne Stroustrup 提出。它利用对象的生命周期来管理资源,确保资源在对象生命周期结束时自动释放。RAII 通过构造函数获取资源,并在析构函数中释放资源,从而避免了资源泄漏。 RAII 的核心思想 资源获取即初始化:在对象构造时获取资源。 自动资源释放:在对象析构时自动释放资源。 这种模式确保了即使在发生异常或多个退出路径的情况下,资源也能被正确释放。 #include <iostream>#inclu
11k10 分钟

# 移动语义(Move Semantics) 在 C++ 11 之前,当对象作为函数参数传递,或者从函数返回,或者作为复制构造函数的参数时,经常会造成不必要的性能开销,因为这些操作会进行对象的拷贝,包括其资源的拷贝(如动态分配的内存)。为了解决这个问题,C++ 11 引入了移动语义。 为什么要用移动语义? 移动语义 的核心思想是,当一个临时对象提供了右值引用时,可以将其内部资源 “移动” 到新的对象中,而不是进行复制。这样,新对象可以重用临时对象的资源,而临时对象在移动后会处于有效但未定义的状态。 好处: 性能提升:避免了不必要的资源复制,减少了性能开销。 资源利用:可以重用临时对象的资源,
18k16 分钟

C++ 作为一种静态类型、编译型语言,需要在编译时确定所有类型。为了在保持类型安全的同时提供灵活性,C++ 引入了模板机制,使得我们能够编写泛型代码。 模板是一种将数据类型作为参数传递给函数或类的通用机制。通过使用模板,我们可以编写与类型无关的代码,这些代码在编译时会针对特定的数据类型进行实例化。 # 为什么要定义模板 在静态类型语言中,变量的类型在编译时必须已知,这有助于编译器进行类型检查和优化。然而,这也意味着我们需要为每种类型编写特定的函数或类,这增加了代码的冗余和维护的复杂性。 与静态类型语言相对的是动态类型语言,如 Python 和 JavaScript,它们在运行时确定变量的类型。
28k25 分钟

# 多态 多态是面向对象编程的核心特征之一,它允许以统一的接口处理不同类型的对象。 # 什么是多态? 多态 允许不同的类的对象对同一消息做出不同的响应。简单来说,就是同一个函数或方法在不同的对象中可以有不同的实现。这样,当我们调用一个对象的方法时,无需知道对象的具体类型,就可以执行相应的行为。 # 为什么需要多态性? 多态性 带来以下好处: 代码复用:通过继承和接口实现代码的复用。 解耦:多态可以降低类之间的耦合度,提高代码的可维护性。 扩展性:多态使得在不修改现有代码的情况下,可以轻松添加新的类。 灵活性:多态提供了更高的灵活性,使得同一个操作可以应用于不同的对象。 # C++ 中的多态
26k24 分钟

# 继承 # 继承的基本概念 在 C++ 中,继承是一种重要的面向对象编程特性,它允许我们建立类之间的层次关系,实现代码的重用和扩展。 继承的概念: 基类(父类):被继承的类称为基类,它定义了可以被其他类继承的属性和方法。 派生类(子类):从基类继承而来的类称为派生类,它继承了基类的属性和方法,并可以添加自己的属性和方法。 在派生类的定义中,需要在类名前指定继承方式和基类名。 class 基类 { // ...};class 派生类 : public 基类 { // ...};C++ 支持三种继承方