C++进阶
cs_zh_xi
No warnings, no errors
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++使用extern修饰const变量
假设b.cpp有变量: // in b.cpp int var_b = 2333; 在同一工程的a.cpp中想要使用var_b,可以如此声明: // in a.cpp extern int var_b; 当如果var_b是const变量呢?即是说b.cpp中var_b的声明是: // in b.cpp const int var_b = 2333; 此时a.cpp的声明也加上const: // in a.cpp extern const int var_b; 看起来没什么问题,.原创 2020-05-31 16:37:39 · 1075 阅读 · 0 评论 -
C++解析虚函数表
今天突发奇想,如何解析类的虚函数表,获取其中的内容? 我们都知道,当存在虚函数时,编译器会为类生成一个虚函数表vtbl (virtual table),并在类对象中存放一个指向vtbl的指针vptr (virtual pointer)。 所以只要找到对象的vptr,就能顺藤摸瓜找到类的vtbl,然后可以读出vtbl中的内容。 那vptr在对象的什么地方? C++标准没有规定vptr存储的位...原创 2020-03-08 11:10:49 · 291 阅读 · 0 评论 -
memmove的实现
memmove的原型是: void*memmove(void*dst, constvoid*src, size_tcount); 实现memmove有两个要点: (1)从src指向的内存拷贝count个字节到dst指向的内存中。 (2)处理src和dst有重叠的情况,这是和memcpy不一样的地方。 要满足条件(1)比较简单,借用memcpy的实现:...原创 2020-02-03 10:53:22 · 1435 阅读 · 1 评论 -
为什么使用std::make_shared
目录为什么使用std::make_shared减少重复代码效率更高降低内存泄露风险 为什么使用std::make_shared std::shared_ptr是常用的智能指针,建立一个shared_ptr对象有两种方式: // (1) std::shared_ptr<Widget> p1(new Widget); // (2) std::shared_ptr<Widget>...原创 2020-01-12 11:23:24 · 5059 阅读 · 0 评论
分享