Cheyne's Blog


  • Home
  • Archive
  • Categories
  •    

© 2025 John Doe

Theme Typography by Makito

Proudly published with Hexo

The Rust Programming Language:Programming a Guessing Game

Posted at 2025-08-29 Rust 

在本章中,我们将会从零开始实现一个经典的入门级程序——猜数字小游戏,目的是在编写的过程中快速熟悉Rust中的各个概念。这个小游戏的主要规则为:随机生成一个1到100的数字,然后提示玩家进行猜测,当玩家输入一个数字后,需要提醒玩家做出的猜测太大了或者是太小了,直到正确地猜到目标数。 Setting Up a New...

现代C++32讲:易用性改造 II - 字面量、静态断言和成员函数说明符

Posted at 2025-08-25 C++ 

字面量C++11引入了自定义字面量,可以使用operator""后缀,来将用户提供的字面量转换为实际的类型。 示例: 这里为了方便,直接导入了 std 命名空间,但正常情况其实应该在字面量的作用域里导入需要的命名空间。 要在自己的类里面支持字面量,唯一的限制是非标准的字面量后缀必须以下...

现代C++32讲:易用性改造 I - 自动类型推断和初始化

Posted at 2025-08-24 C++ 

自动类型推断autoauto并没有改变 C++是静态类型语言这一事实,使用 auto 的变量或函数返回值的类型仍然是编译时就确定了,只不过编译器能自动填充。不使用自动类型推断时,如果容器类型未知的话,我们还需要加上typename,用于显式告诉编译器这是一个类型,而不是静态变量之类的(注意此处 const 引用还...

现代C++32讲:迭代器和好用的新 for 循环

Posted at 2025-08-24 C++ 

什么是迭代器?迭代器是一个很通用的概念,并不是一个特定的类型。它实际上是一组对类型的要求。对容器的begin和end成员函数返回的对象类型提出以下要求,假设前者返回的类型是 I,后者返回的类型是 S,那么这些要求是: I 对象支持*操作,解引用取得容器内的某个对象 I 对象支持++指向下一个对象,同时支持前置和...

现代C++32讲:异常 - 用还是不用,这是个问题

Posted at 2025-08-10 C++ 

如果你不知道到底该不该用异常的话,那答案就是该用。如果你需要避免使用异常,原因必须是你有明确的需要避免使用异常的理由。 没有异常的世界先来看看没有异常的世界是什么样子的,最典型的情况就是 C 了。假设我们要做一些矩阵的操作,定义了下面这个矩阵的数据结构: 初始化和清理的函数: 假设我们需要做矩阵乘法,...

现代C++32讲:容器汇编 II - 需要函数对象的容器

Posted at 2025-08-10 C++ 

函数对象及其特化首先来讨论一下两个重要的函数对象,less和hash。先看一下less,小于关系。在标准库里,通用的less大致是这样定义的: less是一个函数对象,并且是一个二元函数,执行对任意类型的值的比较,返回布尔类型。作为函数对象,它定义了函数调用运算符(operator()),并且缺省行为是对指...

现代C++32讲:容器汇编 I - 比较简单的若干容器

Posted at 2025-08-09 C++ 

String一般不建议在接口中使用const string&,除非确实知道调用者已经持有 string:如果函数里不对字符串做复杂处理的话,使用const char*可以避免在调用者只有 C 字符串时编译器自动构造 string,这种额外的构造和析构成本不低。反过来,如果实现较为复杂、希望使用 strin...

现代C++32讲:右值和移动究竟解决了什么问题?

Posted at 2025-08-07 C++ 

值分左右我们常说 C++中有左值和右值,但标准里的定义其实更复杂,规定了以下这些值类别:先来看lvalue和rvalue。左值lvalue是有标识符、可以取地址的表达式,例如: 变量、函数或数据成员的名字 返回左值引用的表达式,如++x、x = 1、cout << '' 字符串字面量...

现代C++32讲:实现C++智能指针

Posted at 2025-08-05 C++ 

首先,以下代码可以完成智能指针的最基本功能:对超出作用域的对象进行释放。 这里的explicit的作用是禁用隐式转换,必须显式地调用构造函数。 但它缺少了一些东西: 该类对象的行为不够像指针(通过->和*的方式进行操作) 拷贝该类对象会引发程序行为异常 对于第一点比较容易解决,增加几个成员函数...

go1.24.4 channel 源码精读

Posted at 2025-08-05

channel 是什么Go语言当中的并发模型是 CSP(Communicating Sequential Processes),提倡通过通信共享内存而不是通过共享内存而实现通信。如果说 goroutine 是 Go 程序并发的执行体,channel 就是它们之间的连接。channel 是可以让一个 gorouti...

Page 2 / 7  

 Previous Next 

© 2025 John Doe

Theme Typography by Makito

Proudly published with Hexo