Blog von Felix

Work hard and keep simple.

读书笔记——重述《Effective C++》

C++学习笔记

Spoiler alert! This is gonna be a long long blog. 为什么写这篇BLOG 我动手写这篇博文——或者说总结——的想法已经很久了,《Effective C++》这本书的作者和译者都是C++大师,这篇著作有也已享誉全球很多年。但是书无完书、人无完人,这本书也因为这样或那样的原因(我更愿称之为引起我不适的问题)让我有必要为此写一篇总结,使得...

漫谈C++——C++17中的constexpr

C++学习笔记

C++17中的constexpr 在一段时间以前,我曾经写过编译期常量和constexpr,那么在这篇文章的上半部分,我们的目光会放在C++17中和constepxr有关的新特性;在文章的后半部分,我们将综合这四篇文章所涉及到的知识点,在编译期解决FizzBuzz问题,我会着重于介绍我在处理编译期问题的过程和思路,而不是简单的把示例代码罗列出来。如果你对编译期常量和constexpr还一无所...

漫谈C++——const真理大讨论之 const的线程安全

C++学习笔记

const真理大讨论之 const的线程安全 有时我们会听到const就一定线程安全这样的说法,但是事实可能没那么简单。 线程安全的const 有时候人们好像认为只要加一个const就能自动地给一个变量附上一个“线程安全”的属性,因而在多线程环境中就可以随意地访问。 一般而言,不可变 的数据可以在不考虑线程安全的情况下被访问。这是因为数据如果不可变,那么我们就不会去写它,无论什么时候...

漫谈C++——const真理大讨论之 mutable

C++学习笔记

const真理大讨论之mutable 接着上篇文章说,当我们还在语义const和语法const的实现效果不一致中苦苦挣扎的时候,我们实际需要特殊声明变量在封装内部为一种“可变的”状态,但对外提供表现出来的应该是const属性。mutable是在C++中被讨论相对较少的一个关键字。但是它却十分有用,而且在你想写出const正确的代码时几乎不可避免。 我们的核心观点在于,在外部表现为cons...

漫谈C++——const真理大讨论之 语法和语义const

C++学习笔记

const真理大讨论之“语法和语义const” 在接下来我准备花三篇文章的篇幅讨论我们的老朋友const。我曾经在一篇文章里提到了有关指针和引用的顶/底层const,但是在这三篇文章中我想跳出const的语法,讨论一下在使用const时需要特别注意的其他事项,包括const正确性、mutable以及在使用const时的线程安全。这大概构成了这三篇文章的主题,我愿统一称他们为”const的真...

漫谈C++——谈谈在函数中使用auto

C++学习笔记

谈谈在函数中使用auto 前边我写了一篇文章关于如何在变量中使用auto,今天我们来看看在函数中使用auto时的场景,以及需要注意的细节。 基本上,在函数中使用auto的情形大致可分为两类,在C++11中,auto被引入放到函数声明中返回类型的位置,用间接的方式来定义函数的返回类型,如下: //等价于 std::string someFunc(int i, double j); aut...

漫谈C++——工厂模式中的通行证策略

C++学习笔记

比友元更安全——工厂模式中的通行证策略 这次是个小短文,我们从友元谈起。 从友元谈起 在C++中,友元friend可谓是为数不多的比继承还要更强的耦合关系。耦合带来便利,但同时也不可避免得迫使我们在访问控制和安全上做出一些让步。这些问题甚至成为了工厂模式中普遍的缺陷,不信?你看! class Secret { friend class SecretFactory; private: ...

漫谈C++——动态与静态

C++学习笔记

C++中的动与静 问:C++面向对象的三大特性是什么?答曰:封装、继承和多态! 问:如何理解多态?答曰:静态多态指依靠函数重载和泛型编程的编译期多态,动态多态和虚函数有关。 问:讲讲动态多态? 类型、绑定 在讲虚函数之前,首先我们来谈谈类对象指针的类型和成员函数的绑定问题。 一个变量的类型在编译期就可以确定,一般都是对象的声明类型,此时称变量的类型为静态类型。相应的,在运行期被决...

Visual Slam笔记——李群和李代数

Visual SLAM笔记

李群和李代数 问题的引入 当我们估计出相机姿态$[R, t]$了以后,估计的结果和实际的相机姿态肯定会有一些不一致性,因而我们需要对估计出来的结果进行优化。优化方法一般都采用迭代优化的方法,每次迭代都更新一个位姿的增量$\Delta$,使得目标函数最小。这个$\Delta$就是通过误差函数对$\mathbf{T}$或者$\mathbf{R}$求微分得到的,也就是说我们需要对变换矩阵$\m...

漫谈C++——谈谈在变量中使用auto

C++学习笔记

谈谈在变量中使用auto 用作变量类型推演的关键字auto可能是C++11最著名的特性了,所以这篇文章我长话短说,简单写一下我认为比较重要的使用法则。 怎么用 auto 这一节我会写得尽可能短,因为我默认大家都已经用过auto了。如果有谁没用过的话,有大量的书和文章来替我讲这方面的知识。 我们都是用auto这个关键字来代替一个具体变量的类型定义,让编译器自己去寻找和从它的初始化过程中...