摘要:
异常处理在C++中的地位是很尴尬的,他不被很多公司或者程序员认可,但是基于某些原因,个人依然觉得异常处理在C++程序中 是非常必要的。 一般来说,异常分为两大类,一个是抛出异常,另一个是接受异常然后处理。 抛出异常使用throw。 接受异常 使用try....catch 语句块。 1.标准异常抛出 阅读全文
摘要:
也许,你听过设计模式里的箴言,要针对接口编程,而不应该针对细节(具体)编程;或者你还听过,要减少代码间的依赖关系;甚至你还知道,修改一个模块时,要保证重新编译的文件依赖要最小化,而重新编译的时间最短化。当你问,How to?大神就会祭出 的经文。 我们在使用面向对象语言编程时,或者更宽泛些 ,设计一 阅读全文
摘要:
C++程序员对于explicit这个关键字其实不是很熟悉,至少我是如此;原因在于其使用范围不大,而且作用也没有那么大。 但是这不是说明我们的程序中不需要这个关键字,按Google的C++编程规范和Effective C++的推荐看,我们最好将只有一个参数的构造函数都加上这个关键字,这同时也是cppc 阅读全文
摘要:
C++的类型转换 类型转换4大金刚: static_cast 执行基础转换 const_cast (添加或者)移除 const dynamic_cast 执行已检查的多态转换,沿着继承层次结构安全地将指针和引用转换为向上、向下和横向的类 reinterpret_cast 执行一般的低级转换 stat 阅读全文
摘要:
开始使用 "catch" 呢! catch的好处是,它只有一个头文件, 坏处是,它需要C++11,不过不是很坏。 catch有两种测试用例的书写方式: Normal 最佳实践 将catch宏和头文件用一个单独的main文件包含,避免编译时的时间浪费; 阅读全文
摘要:
c++的可调用对象 有 函数 函数指针 lambda表达式 bind的对象 重载了函数调用运算符的类 如何调用? 函数调用 输出结果 由此可见,通过function模板,我们将类型本不同的5个可调用对象打包成统一的类型,因为它们的返回值和参数类型是完全一样的。通过函数表的使用,我们可以写出封装更好的 阅读全文
摘要:
1. 要想在sublime中使用cppcheck很简单,只需要安装两个插件就可以了:Sublimelinter 和 Sublimelinter cppcheck 2. 安装完成后在Sublimelinter的配置文件中配置cppcheck的路径: 如: 3. 使用时在当前cpp文件下,按下ctrl+ 阅读全文
摘要:
代码静态检查 使用cppcheck给工程代码做静态检查,主要发现了以下几个问题: 1. 使用C风格的类型转换 警告如下: 应该使用C++提供的static_cast, const_cast, dynamic_cast 和 reinterpret_cast 做类型转换,明确转换的类型。 2. 迭代器使 阅读全文
摘要:
构造函数 关于构造函数,我们耳熟能详,似乎都没有必要成为一个知识点,或者说是重要的知识点拿出来特殊说明,毕竟C++的编译器都能帮我们完成这个工作,只是,事情真的如想象的那么简单么; 可能不是。 本文试图挖掘关于构造函数,可能不是那么简单的一面,当然也不会很全面,权当一起学习了。 构造函数的概念:提供 阅读全文
摘要:
C++的关联容器主要是两大类map和set [toc] 我们知道谈到C++容器时,我们会说到 顺序容器(Sequence containers),关联容器(Associative containers),无序关联容器(Unordered associative containers)以及容器适配器( 阅读全文