全部安全开发新闻数码摄影汽车北京AIIT其他
  • 文章封面

    写库的人都爱这一招:NVI(非虚接口)怎么把流程锁住

    作者:everystep发布日期:2026-01-14 07:40:00

    那时候还没有“接口”这个词。大家写的更多是“约定”。写在邮件里。写在 README 里。写在某个老同事的脑子里。然后项目一大。约定就开始漏风。在没有纯虚函数的年代:大家怎么写“可扩展”的代码C 时代的

    阅读全文
  • 文章封面

    从 C 的返回码到 Rust 的 Result:C++ 为什么非要搞出 noexcept?

    作者:everystep发布日期:2026-01-13 07:00:00

    异常这东西。在 C 的世界里。它一开始其实很朴素。函数失败了。就返回一个值。-1。或者塞个 errno。你再写一层。就再把这个值往上抛。一路抛到 main。人也跟着老了几岁。后来 C++ 来了。带着类

    阅读全文
  • 文章封面

    模板报错像天书?把 static_assert 放进去,编译器立刻讲明白

    作者:everystep发布日期:2026-01-13 07:00:00

    那会儿我刚从 C 走到 C with classes。项目不大。人也不多。我们写代码的标准很简单。能跑。就算赢。直到有一天。同一份程序。在我机子上不炸。到了客户那台机器。啪一下。我去问原因。没人能一句

    阅读全文
  • 文章封面

    从函数指针到虚函数表:C++ 把‘回调套路’收编了

    作者:everystep发布日期:2026-01-12 07:00:00

    有段时间。大家写“面向对象”。但代码看起来还是 C。一个 struct。再塞几根函数指针。能跑。也挺灵活。然后某天。 线上炸了。你去看 core dump。发现是一个空指针。指向一张你以为“永远不会空

    阅读全文
  • 文章封面

    构造/析构里调用 virtual:看起来省事,实际很悬

    作者:everystep发布日期:2026-01-12 07:00:00

    那是一个很老的坑。老到它比“现代 C++”还早。老到你第一次见到它。会怀疑:是不是我把语言学错了。它不报错。它也不崩。它只是很安静地。做了你没预期的事。当年没有“虚函数”这个词先把时间拨回去。那会儿很

    阅读全文
  • 文章封面

    把 cast 当成声明意图:一眼看出这行代码在冒什么险

    作者:everystep发布日期:2026-01-11 10:09:48

    那些年。你写的是 C。写着写着。就写成了“带点 class 的 C”。编译器不怎么唠叨。IDE 也不怎么提醒你:这行代码危险。你要把一个东西当成另一个东西用。最顺手的,还是那一对括号。你写的时候很放心

    阅读全文
  • 文章封面

    虚函数重写的自救指南:override、final、默认参数与隐藏

    作者:everystep发布日期:2026-01-11 10:09:48

    那会儿写 C++。大家都挺自信。尤其是刚把代码“改对”。编译通过。单元测试也绿了。你心里想。这事就算完了。然后线上给你回了一巴掌。不是崩溃。更讨厌。它“能跑”。只是行为不对。而且还很像“偶发”。你开始

    阅读全文
  • 文章封面

    我当年也没搞懂:`virtual` 到底在替我们做什么

    作者:everystep发布日期:2026-01-10 07:00:00

    那时候写代码。大家更信指针。也更怕指针。你想写“通用代码”。比如你写了个小绘图工具。里面有圆。有矩形。还有些你自己临时加的形状。你只想写一段循环。让它们自己把自己画出来。在坑里长大的“多态”上世纪 8

    阅读全文
  • 文章封面

    对象切片:不是 bug 很难发现,是它太“正常”了

    作者:everystep发布日期:2026-01-10 07:00:00

    那时候大家刚学完 C。手里最顺的一招。就是“按值传”。不想碰指针。不想挨空指针的骂。更不想半夜被段错误叫醒。所以你很自然会想。把对象拷一份进函数里。我用我的。你用你的。互不干扰。听起来挺靠谱。后来 C

    阅读全文
  • 文章封面

    收到工资1182415.18元,爱你DeepSeek!

    作者:everystep发布日期:2026-01-09 07:00:00

    今年DeepSeek爆火,生成式AI和大模型技术呈现爆发式增长,也让算法工程师重新成了炙手可热的岗位,岗位薪资远超很多运维、嵌入式、前后端岗位,在程序员中稳居前列。AI的快速发展也给很多程序员带来更多

    阅读全文
  • 文章封面

    同一个祖先,为什么会出现两份?聊聊菱形继承与虚继承

    作者:everystep发布日期:2026-01-08 07:00:00

    多重继承这东西。一开始不是为了炫技。是为了活下去。那是 80 年代。C++ 还叫 C with Classes。项目开始变大。文件多。人也多。复用的冲动特别真实。你写了一套“通用能力”:能打印,能扫描

    阅读全文
  • 文章封面

    你以为 private 继承“不能用”?其实就差这一句 using

    作者:everystep发布日期:2026-01-08 07:00:00

    有些语法。长得像小修小补。当年却真救过人。你写着写着。会突然发现。你想复用一个基类。但你不想把它的所有东西都“送出去”。更麻烦的是。你还不想为了这点事。去改基类。回到 C with Classes 的

    阅读全文
  • 文章封面

    同一个对象,两个门口:多重继承里的指针为什么会挪位?

    作者:everystep发布日期:2026-01-07 07:00:00

    80 年代的工程师很少一上来就讨论“对象模型”。他们更常讨论的是。这段代码能不能少复制一点。这个模块能不能少改几处。这个改动能不能别把整个项目带崩。那时候 C with Classes 还很年轻。你能

    阅读全文
  • 文章封面

    用现代 C++ 手搓一个 RISC-V 64 位模拟器

    作者:everystep发布日期:2026-01-07 07:00:00

    ——给求职焦虑的你,一个能写进简历、也能讲进面试的虚拟 CPU 项目很多年之后。你再回头看那段找工作的时间。大概率只记得两件事。一件事。刷题。刷到怀疑人生。另一件事。面试官翻着你的简历。抬头问一句:“

    阅读全文
  • 文章封面

    别再把 public/protected/private 当“权限”了

    作者:everystep发布日期:2026-01-06 07:00:00

    很久以前。大家写 C。想复用。只能复制粘贴。或者写一堆宏。也有人开始玩“结构体套结构体”。看起来像继承。但谁都知道。这东西全靠自觉。自觉这种东西。最不可靠。C with Classes 出现以后,新的

    阅读全文
  • 文章封面

    从 struct 套 struct 到 C++ 继承:中间踩过哪些坑?

    作者:everystep发布日期:2026-01-06 07:00:00

    那会儿大家写 C。写在一堆 .c 和 .h 里。项目开始变大。但工具和语言,还是那个工具和语言。你想复用一段逻辑。第一反应不是“继承”。第一反应是:复制粘贴。然后祈祷别漏改。再然后。你就会开始讨厌自己

    阅读全文
  • 文章封面

    用“拷贝”做“交接”,到底会出什么事?auto_ptr 给过答案

    作者:everystep发布日期:2026-01-05 07:00:00

    你第一次见到 std::move。大概率会被名字骗一下。move。那不就是“移动”吗。于是你心里会冒出一个很自然的画面。我把东西 move 走。原来的地方就空了。然后你会以为性能会更好。故事要从更早的

    阅读全文
  • 文章封面

    你不一定需要 static_assert,但你迟早会想要它

    作者:everystep发布日期:2026-01-05 07:00:00

    那会儿我刚从 C 走到 C with classes。项目不大。人也不多。我们写代码的标准很简单。能跑。就算赢。直到有一天。同一份程序。在我机子上不炸。到了客户那台机器。啪一下。我去问原因。没人能一句

    阅读全文
  • 文章封面

    你把 malloc 的指针当对象用?这不是“能跑”,这是在等一次大爆炸

    作者:everystep发布日期:2026-01-04 07:00:00

    八十年代初。贝尔实验室里有一拨人。他们在用 C 写系统。代码能跑。但维护很痛。痛点不新鲜。就是“忘了收尾”。忘了 destroy。忘了 free。忘了某个 init。然后线上开始讲鬼故事。有人想把这事

    阅读全文
  • 文章封面

    我一直以为返回类型只能靠猜,直到我看到 decltype 那一行

    作者:everystep发布日期:2026-01-04 07:00:00

    decltype 这玩意,到今天都像个老朋友……它不是为了让你写得更“高级”,而是为了让类型别再靠猜。你写模板写到凌晨,就会理解这句话的分量。那会儿还叫 C++0x,标准还没定,可项目已经要交付了。你

    阅读全文
  • 文章封面

    用现代 C++ 从零手写智能指针

    作者:everystep发布日期:2026-01-03 07:00:00

    ——给想把“内存管理/RAII”真正讲清楚的你,一套可验证的硬核训练很多年之后。你再回头看那段找工作的时间。大概率会记得两件事。一件事。刷题。刷到怀疑人生。另一件事。面试官翻着你的简历。抬头问一句:“

    阅读全文
  • 文章封面

    一个类,一份变量:你写了 static,就等于默认引入了“全局状态”

    作者:everystep发布日期:2026-01-03 07:00:00

    我第一次被“静态成员”坑到。不是崩溃。是链接错误。那种很有年代感的红字。undefined reference to Foo::kCount当年我还以为自己把 C++ 写坏了。后来才明白。我只是把“变

    阅读全文
  • 文章封面

    宏写得越爽,线上炸得越响

    作者:everystep发布日期:2026-01-02 07:27:00

    我第一次真正在意“常量”。不是因为它难。是因为它太容易被写错。然后还很难查。那会儿我在修一个老项目。头文件里全是 #define。像家谱。谁也不敢动。但线上就是这么爱挑这种时候出事。某次夜里。报警响了

    阅读全文
  • 文章封面

    只改了一个成员声明顺序,我把一个“玄学崩溃”变成了可解释的 bug

    作者:everystep发布日期:2026-01-02 07:27:00

    那天我都准备下班了。工位灯都关了一半。群里突然有人 @我。“线上有个小服务。启动就崩。刚发的版本。”我第一反应是。谁又把构造函数玩坏了。因为这种事故有个味道。像新买的咖啡机。啪一声。跳闸。我们那会儿刚

    阅读全文
  • 文章封面

    空类为啥也要收你 1 个字节?不懂这个,迟早在“对象地址”上翻车

    作者:everystep发布日期:2025-12-31 07:00:00

    我第一次看到这句输出。是很多年前。一个老同事把打印丢给我。他说。“你看,C++ 连空都不让你空。”#include <iostream>struct Empty {};int main() {

    阅读全文
  • 文章封面

    auto 一用就爽?先把引用和 const 这关过了

    作者:everystep发布日期:2025-12-31 07:00:00

    auto 这东西。我第一次认真看它。不是在 C++11。是在更早的老代码里。那种你一打开就能闻到“2003 年味道”的工程。你会看到一堆熟悉的老朋友。static。extern。register。还有

    阅读全文
  • 文章封面

    把 C++ 的“面向对象”刮掉:剩下的就是 C、指针、和编译器的手法

    作者:everystep发布日期:2025-12-30 07:00:00

    我刚学 C 的时候。函数很“老实”。你要它改谁。你就把谁的地址传进去。void inc(int* p) { ++*p;}int x = 0;inc(&x);你看。谁被改。一眼就知道。后来我第一次

    阅读全文
  • 文章封面

    内存不是黑盒:把它想成一排“字节格子”,一切突然就通了

    作者:everystep发布日期:2025-12-30 07:00:00

    内存不是黑盒。你把它想成一排“字节格子”。从地址 0 排到地址 N-1。每一格。正好 1 个字节。很多问题就不再神秘。比特。字节。地址。sizeof。会在同一张图上对齐。很多教材也会用一句话开头。然后

    阅读全文
  • 文章封面

    把对象当内存看懂一次,你的 C++ 会突然顺很多

    作者:everystep发布日期:2025-12-29 07:00:00

    我最早学 C 的时候。老师不爱讲“对象”。他只讲内存。讲地址。讲 malloc。然后拍着黑板说。“结构体就是一段连续的字节。”这句话听起来粗。但它很诚实。后来我开始写 C++。同样的结构体。突然就能有

    阅读全文
  • 文章封面

    成员顺序随手一换,sizeof 直接翻倍:你写的不是结构体,是利息

    作者:everystep发布日期:2025-12-29 07:00:00

    我第一次被 sizeof 教做人。不是在课堂。是在一次很真实的协议联调里。那会儿我还年轻。看见结构体就手痒。总觉得它天生适合当包头。于是我写了一个很朴素的东西。#include <cstdint>st

    阅读全文
上一页下一页