
C++ tricks
专栏分享一些有趣的 C++ 的奇淫巧计,用来侧面解释和融汇贯通一些 C++ 的原理性的东西。更框架性的、更严肃的 C++ 教程以后看心情再更
natsusao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++奇淫巧计:如何自助控制对象的初始化和销毁
operator new 在上一篇文章里有解释,不细说了。我们可以用 placement new 从编译器里把对象初始化、析构的过程拿过来。手动决定 Test 的整个生命周期。出来后自动根据需求,或是默认构造函数或是拷贝构造函数或是隐式转换,拿到手后就能用,习以为常。的两个行为——内存分配、内存初始化。但我们其实可以精确控制。我们需要一个对象时,原创 2024-02-06 17:00:36 · 442 阅读 · 2 评论 -
C++奇淫巧计:如何快速观察内存分配
在不严肃的场景下,你想测试、跟踪自己的代码的内存分配,粗略评估有无错误的、意外的行为,怎么做?很简单,直接重写 new 操作符。我们用两个测试例子试用一下。原创 2024-02-06 12:17:04 · 380 阅读 · 0 评论 -
C++奇淫巧计:如何用奇怪的头文件 Header file 来补全代码
如你所见,两个头文件分别写了一个左花括号,一个右花括号。此时如果你的 IDE 够智能,这两个文件都会提示语法报错——毕竟只有一个花括号的代码是什么鬼?众所周知 { } 包含的是一个代码块 Chuck,代表了 main 函数的作用域。如果去掉花括号,main 函数无疑会编译失败。接着我们新定义两个头文件,left_brace.h、right_brace.h。头文件的 {、} 被展开到了 main 函数,自然就补全代码而正确了。奇迹发生了,这段诡异的代码,能够编译通过并正常运行。原创 2024-02-01 17:05:06 · 343 阅读 · 0 评论 -
C++ 奇淫巧计:如何用一行代码算出 Class 或者 Struct 里成员变量的内存偏移?
nullptr 相当于 0 ,解释为 Vector3* 指针之后,此指针编译器理解成在地址 0 处分配的 Vector3 指针。将此地址用 & 取值转换为 int 后即可输出,注意不可直接转换 (int)(null-ptr->x),原因后面会讲到。此时由 nullptr->x 即是 0 + x-offset。原创 2024-01-28 16:02:30 · 316 阅读 · 0 评论