![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Modern C++
breaksoftware
这个作者很懒,什么都没留下…
展开
-
Modern C++——不准确“类型声明”引发的非必要性能损耗
先看下面这段可以运行的代码。请问下面的代码有什么性能问题?可能第一眼看过去,并不能发现它的问题所在。我们将这段代码的运行过程打印出来可以发现在遍历的过程中,发生了Custom对象的复制和析构。如果Custom对象比较大,就会引发性能问题。这是因为std::unordered_map的Key是const类型,即我们应该如下方式遍历编译器在发现我们没有使用const Custom时,会自己推理并转换以符合我们书写的代码。这样就会导致一次const Custom向Custom复制的一次构造。原创 2024-08-26 00:15:00 · 224 阅读 · 0 评论 -
Modern C++——Copy Constructor和Assignment Operator的禁用
在C++中,拷贝构造函数(Copy Constructor)和赋值函数(Assignment Operator,通常称为赋值运算符重载)是处理对象复制和赋值操作的重要机制。有时候,根据类的设计需要,我们可能会选择禁用或限制这些函数的使用。下面我们来探讨禁用拷贝构造函数和赋值函数的作用、好处以及使用场景。原创 2024-08-14 00:15:00 · 1547 阅读 · 0 评论 -
Modern C++——薛定谔的猫和std::optional
在一个充满奇思妙想的量子物理世界里,有一个著名的思想实验,被称为“薛定谔的猫”。这个实验由奥地利物理学家埃尔温·薛定谔提出,用以阐述量子力学中一个深奥而迷人的概念——量子叠加态。故事是这样的:想象有一只猫被关在一个装有少量放射性物质和毒气装置的密封箱子里。这个放射性物质有50%的概率在一个小时内衰变,从而触发毒气装置杀死猫;但同样也有50%的概率不衰变,猫因此安然无恙。根据经典物理学的逻辑,我们自然会认为,当我们打开箱子查看时,猫要么是死的,要么是活的,这两种状态是互斥的。原创 2024-08-15 00:15:00 · 1077 阅读 · 0 评论