这里可能没有你想看的...
从零开始 の 练手项目 从零开始 の 练手项目
运行环境:VScode + WSL(Ubuntu 22.04 LTS) >>> Github 仓库<<< 实现一个命令行工具模拟游戏玩家。每个玩家存储数据结构 - 昵称 - 金币 - 道具背包(支持多
2024-04-25
C++ の 标准模板库(STL) C++ の 标准模板库(STL)
标准模板库(Standard Template Library, STL)是一个 C++ 软件库,大量影响了 C++ 标准程序库但并非是其的一部分。其中包含 5 个组件,分别为迭代器、容器、容器适配器、算法、函数。 迭代器 容器 std:
2023-11-09
C++ の 可变说明符(Mutable) C++ の 可变说明符(Mutable)
mutable 意为可变的,可以在非引用非常量非静态数据成员的声明中出现,允许被常量类对象修改。 类中的 mutable 先聊聊一个有趣的话题,关于 const 类成员函数有两大观点流派: bitwise constness:主张成员函
2023-03-02
C++ の 异常处理(Exception) C++ の 异常处理(Exception)
异常,在操作系统中指的是指令内部出现的"内中断",如除数为零,地址越界等。这些情况在程序中也时有发生,C++ 为了应对偶发的程序异常事件,引入了异常处理机制。其基于三个关键字:try,throw 与 catch。 异常处理流程 一个完整的
2023-03-01
C++ の 泛型编程(Generics) C++ の 泛型编程(Generics)
泛型编程是程序设计语言的一种风格或范式,允许程序员在编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。在 C++ 里,这是与 OOP 并列的一大分支,通过模板来实现。 Why 模板? 现在有一个需求,就是写一个简单的 s
2023-02-28
C++ の 类型转换(Type&Cast) C++ の 类型转换(Type&Cast)
当表达式期望为 T 类型,而我们只能产生 S 类型的表达式时,就需要利用类型转换功能来满足需求。 传统的转换总结来说分为隐式与显式两种。 隐式转换 凡是在语境中使用了某种表达式类型 T1,但语境不接受该类型,而接受另一类型 T2 的时候,
2023-02-27
C++ の 内存分配(Memory Allocation) C++ の 内存分配(Memory Allocation)
众所周知,C++ 是一门与内存紧密相关的语言,本文就来聊聊 C++ 眼中的内存分配。 内存布局 C++ 程序的内存分为 5 大区域,分别为代码区、常量存储区、全局/静态存储区、堆区、栈区,每个区域存放不同类型的数据: 代码区(.text
2023-02-19
C++ の 面向对象(OOP) C++ の 面向对象(OOP)
面向对象程序设计(Object-oriented programming, OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。 封装 装 装是指把数据与操作这些数据的函数绑定到一块,抽象成一个类。 C++11 引入移
2023-02-14
C++ の 内联函数(Inline) C++ の 内联函数(Inline)
inline 只能用于修饰函数,能够解决一些频繁调用的小函数大量消耗栈内存的问题,是一种提高程序运行效率的手段。 inline 基本 众所周知,函数的调用需要消耗栈内存,每次调用一个函数,就会在栈中分配一片函数所需内存(如参数压栈),但栈
2023-02-13
C++ の 静态修饰符(Static) C++ の 静态修饰符(Static)
static 是 C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。 static 普通变量 static 修饰的普通变量存储在静态区,其生命周期延长至整个程序结束。只有第一次会执行初始化,若无初始值,则用默认值进行初始化。
2023-02-13
C++ の 常量(Const) C++ の 常量(Const)
const 与 volatile 一起并称 CV 限定符,用于指定被声明对象或被命名类型的常量性或易变性。 const 全称 constant,其指定一个约束,告知编译器该变量无法被修改。对于那些明确不发生改变的变量,应尽可能使用 con
2023-02-13
C++11 の 其它特性(Else) C++11 の 其它特性(Else)
有些 C++11 特性比较琐碎,单纯用一篇文章描述浪费,还有灌水嫌疑(bushi),于是整合到同一篇来讲。 范围 for 循环 允许 for 循环中使用 for (范围变量声明 : 范围表达式) 的形式进行遍历,无需 for(...;..
2023-02-06
C++11 の 正则表达式(Regex) C++11 の 正则表达式(Regex)
正则表达式,又称规则表达式(Regular Expression,常简写为 regex、regexp 或 RE),是一种文本模式/规则,包括普通字符和特殊字符(元字符)。通常使用单个字符串来表示正则表达式 pattern,并匹配一系列符合模
2023-02-05
C++11 の 预置与弃置(Default & Delete) C++11 の 预置与弃置(Default & Delete)
C++11 中新增了 default 与 delete 这俩关键字。请不要误会,这里的 delete 并不是与 new 搭配使用释放内存的那个,而是跟 default 相对的用于类成员函数声明的关键字。 default 众所周知,如果用户
2023-02-04
C++11 の 委托与继承的构造函数(Delegating & Inherited Constructors) C++11 の 委托与继承的构造函数(Delegating & Inherited Constructors)
委托构造函数与继承构造函数并非独立的新构造函数,而是 C++11 新增的用于提高编码效率的特性。 委托构造函数 委托构造函数允许构造函数通过初始化列表调用同一个类的其他构造函数,相当于将自己的构造职责委托给了其它构造函数。目的是简化构造函
2023-02-03
C++11 の 智能指针(Smart Pointer) C++11 の 智能指针(Smart Pointer)
C++ 不像 Java 那样有虚拟机动态的管理内存,如果使用裸指针,在程序运行过程中可能就会出现内存泄漏等问题,然而这种问题其实都可以通过 C++11 引入的智能指针来解决。 裸指针的内存泄漏问题 前面提到使用裸指针会存在内存泄漏等问题。
2023-02-02
C++11 の 并发支持(Concurrency) C++11 の 并发支持(Concurrency)
C++11 新增了官方并发支持库,使得我们能够更好地在系统间移植程序,之前的 Boost 库等也就随之成为历史了。 并发与并行 多线程的世界中,常常会涉及这俩重要概念。 从定义的角度来说,在操作系统中,并发是指一个时间段中有几个程序都处于
2023-01-29
C++11 の 列表初始化(List Initialize) C++11 の 列表初始化(List Initialize)
在 C++11 中,可以直接在变量名后面用 {初始化列表} 来进行对象的初始化。 旧世界 C++11 以前,各种初始化方式如神仙打架,百花齐放,在同一个项目中,你或许可以看到如以下几种不同的初始化方式: class A { public
2023-01-28
1 / 2