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

    future / promise / async:少写一点并发的土协议

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

    那会儿还没有 C++11。也没有 std::thread。更别提 std::async。你想并发。就去写 pthread。或者上 Boost。然后把“结果”塞回主线程。靠全局变量。靠输出参数。靠一堆锁

    阅读全文
  • 文章封面

    完美转发:不是技巧,是别自作主张

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

    在 C++11 之前。写 C++ 很像写 C。只不过多了个 class。那会儿没有 std::move。也没有右值引用这种东西。你想把一个对象传给别人。通常就一个动作。拷贝。对只写过 C 的人来说。拷

    阅读全文
  • 文章封面

    从 Boost 到 C++11:type traits 这套“类型体检”怎么来的

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

    我想先把时间拨回去。拨回到一个更野的年代。那会儿你也写模板。也会写一个 T。然后你盯着它发呆。这玩意到底是不是整数。能不能拷贝。是不是引用。是不是我想要的那个类型。你问得很认真。但编译器只回你一句。“

    阅读全文
  • 文章封面

    C# 强制你写 override,C++ 为什么不?答案比你想的现实

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

    那会儿还没有这些“把意图写进语法”的小工具。大家写的还是 C with classes。写着写着。项目就长大了。然后线上啪一下。你才发现。最贵的不是崩溃。是“它居然没按我想的跑”。那些年,覆写靠的是记

    阅读全文
  • 文章封面

    以前我们用宏、enum、模板在“凑合”;C++11 终于给了一个像话的办法

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

    那会儿你写一个“常量”。多半就是一行 #define。写上去。编译过。就当它永远不会变。直到有一天。它变了。而你是在凌晨两点才知道的。一个小项目,线上啪一下当年我们做过那种“小得不能再小”的服务。一个

    阅读全文
  • 文章封面

    从 GCC 方言到 C++11:对齐这事,终于不用靠传说了

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

    那会儿我们写 C。也写一点 C with classes。项目不大。胆子不小。我们总觉得。内存嘛。不就是一排字节。指针嘛。不就是一把钥匙。直到有一天。线上啪一下。不是逻辑错。是进程没了。还特别挑人。你

    阅读全文
  • 文章封面

    你要的是性能,还是正确性?锁、atomic、thread_local 你到底该选谁

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

    有段时间。我们写程序。写着写着就会开始用线程。一个请求一个线程。或者一个线程池。那时候的痛点很朴素。我想要一个“全局变量”。但我只想让它对当前线程有效。别的线程别来碰瓷。那些年:没有“每线程一份全局”

    阅读全文
  • 文章封面

    你学 C 学出来的“非 0 就真”,在 C++ 里会害你

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

    那是很多年前。办公室的灯。经常亮到半夜。我们写的 C++。其实就是 C。外加一点 class。那时候最响的一句话是。“能跑就行。”后来我才知道。有些东西。一旦“能跑”。就会跑去你没想到的地方。那会儿的

    阅读全文
  • 文章封面

    宏让你少打字,也能让你背锅:单位这坑,C++11怎么补

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

    十几年前。大家写 C。后来写 C with classes。代码里最常见的“类型”。就俩。int。double。数字一多。单位就开始飘。今天你写的是“500”。明天别人读成了“500”。然后线上啪一下

    阅读全文
  • 文章封面

    为什么别的语言早就有“原始字符串”,C++ 却让我们多熬了 10 年?

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

    那会儿我们写 C++。还是 “C with classes” 那味。项目不大。但线上一样会出事。出事的时候。你不会先怀疑字符串。你会先怀疑自己的人生选择。有一次半夜。线上突然开始找不到配置文件。日志里

    阅读全文
  • 文章封面

    重复的构造函数,本质上是在复制 bug。

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

    那会儿我们写 C++。很多人嘴上说 C++。手里其实还是 C。最多再加点 class。构造函数也一样。它看起来像“自动帮你把对象弄好”。但你真写过几天。就会发现它更像“手动装配流水线”。而且没有复用。

    阅读全文
  • 文章封面

    虚函数不是玄学:它只是把“手写函数表”收编了

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

    你写下 p->foo()。看起来像一句话。像一句很普通的话。可在当年。这句话是很多人用 crash 堆出来的。而且那种 crash。通常还不在你写错的地方。“C++ makes it harder t

    阅读全文
  • 文章封面

    写库的人都爱这一招: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。项目不大。人也不多。我们写代码的标准很简单。能跑。就算赢。直到有一天。同一份程序。在我机子上不炸。到了客户那台机器。啪一下。我去问原因。没人能一句

    阅读全文
上一页下一页