在 CLion 中配置 gtest

最近在学习 googletest 这个用于 C++ 的单元测试框架的时候,遇到了一个问题。就是希望可以在 CLion 中配置好一个制定项目的测试,然后由 CLion 运行并且给出一个结果。

结果当然是成功了的,这篇文章主要就记录一下整个配置的过程,配置过程整体很简单,主要就是写 CMakeLists.txt 的过程(因为 CLion 使用 CMakeLists 管理整个 C++ 的项目)。

项目目录结构

+ project_home

+ ext // external library

+ gtest // google test framework

- CMakeLists.txt

......

C++11 完美转发+变长参数

完美转发(argument forwarding):

给定一个函数F(a1, a2, ..., an),要写一个函数G,接受和F相同的参数并传递给F。

这里有三点要求:

1. 能用F的地方,G也一定能用。

2. 不能用F的敌方,G也一定不能用。

3. 转发的开销应该是线性增长的。

这里在C++11出现之前,人们做了很多尝试。就出现了很多的替代方案,直到C++11出现之后,才有了一个完美的解决方案。

非常量左值引用转发

template<typename T>

void g(T1& t) {

return f(t);

}

void f(int ......

Python Tips

switch...case的写法

可以用if...elif...else的办法,或者使用跳转表:

{

0: "zero",

1: "one",

2: "two"

}.get(x, "error")

有关于常量

显然命名风格这种办法并不能根本上阻止常量被改变。那么就可以定义一个类,修改这个类的__setattr__方法,当检查到key已经存在的时候直接抛出一个异常就可以了。

使用with自动关闭资源

with语句可以在代码块执行完毕后还原进入该代码块时的现场。包含有with语句的代码块的执行过程:

1. 计算表达式的值,返回一个上下文管理器对象。

2. 加载上下文管理器对象......