No More C++
文章平均质量分 92
No More C++ 系列带你玩转现代C++
OreoMcFlurry
learn to code
展开
-
C++ 智能指针与陷阱
Smart Pointer 启示录为什么要使用智能指针智能指针的致命使用错误1. 重复删除2. 无法共享 *this 指针3. 内存泄漏启发为什么要使用智能指针C++ 11 带来了几个比较重要且实用的新特性,smart pointers 就是其中一员。auto_ptr 被摒弃,取而代之的是 uni_ptr 。不过它们两个都不是本文关注的对象,而是 shared_ptr 跟 weak_ptr 。使用智能指针的目的很纯粹,因为 C++ 没有 GC (Grabage Collector) 。所以我们需要一种原创 2021-03-28 15:24:30 · 360 阅读 · 0 评论 -
C++ 为什么不要多重继承?
No More C++ 系列带你玩转各种现代 C++ ,凡人也可以拥抱 C++。多重继承指的是某个类同时继承了两个或以上的其他类。那么多重继承存在着什么问题呢?class Machine{public: virtual ~Machine() {} Machine() { std::cout << "machine \n"; }};class Printer : public Machine{public: Printer() : Machine() .原创 2020-12-13 17:09:45 · 858 阅读 · 0 评论 -
C++ 的 Copy Elision
No More C++ 系列带你玩转各种现代 C++ 的重要知识,告诉你凡人也可以接触和拥抱 C++。Copy elision (拷贝省略,下文称之为 CE),忽略拷贝构造函数和移动构造函数,,引发零拷贝值传递语义。CE 分为强制性和非强制性两大类。先假设我们有这么一个 Widget 类。class Widget{public: Widget() { std::cout << "construct \n"; } Widget(const Widget& other) {.原创 2020-12-08 20:09:27 · 282 阅读 · 0 评论 -
C++ 的 Rule-of-Three
No More C++ 系列带你玩转各种现代 C++ 的重要知识,告诉你凡人也可以接触和拥抱 C++。C++ 作为一个古老的面向对象编程语言,基本上大部分事情都是围绕着 class 展开。引:在介绍 rule-of-three 和 copy-and-swap idiom 之前,我们来回顾一下如何用 C++ 构造一个自定义类。// Example 1class Empty {};E...原创 2020-04-11 17:48:13 · 842 阅读 · 0 评论 -
C++ 的 Linkage
在 c++ 代码运行之前,编译器和连接器的需要完成它们的工作。至于编译器和连接器是如何运作,本文就不作叙述。如果想要程序能够顺利地跑起来,我们需要了解 C++ 中的三个至关重要的概念 - translation unit (编译单元,下面简称 TU) 、one definition rule (定义一次规则,下面简称 ODR) 和 linkage (连接) 。所谓的 TU 就是每个 sourc...原创 2020-04-06 22:02:26 · 828 阅读 · 0 评论