HLdongdong的博客

路虽远,行则至

好像很有道理,但实际什么也没说出来

曾经有一个人这样评价过我说出的一段话。“说得好像很有道理,但是什么也没有说出来” 这大概是两年前的事了,但是最近几天这句话一直在脑袋里循环着,搞得心里总是堵得慌。 这么久不会忘记这句话,是我觉得它很有道理。我天生就是一个充满好奇心的人,对陌生的事物或者是现象总是充满兴趣,并且我愿意去付出时间和...

2017-10-28 22:22:42

阅读数 212

评论数 0

C++风格_Boost库

只使用 Boost 中被认可的库.定义: Boost 库集 是一个广受欢迎, 经过同行鉴定, 免费开源的 C++ 库集.优点: Boost代码质量普遍较高, 可移植性好, 填补了 C++ 标准库很多空白, 如型别的特性, 更完善的绑定器, 更好的智能指针。缺点: 某些 Boost 库提倡的编...

2017-10-24 19:42:37

阅读数 481

评论数 0

C++风格_模板编程

不要使用复杂的模板编程定义:模板编程指的是利用c++ 模板实例化机制是图灵完备性, 可以被用来实现编译时刻的类型判断的一系列编程技巧优点:模板编程能够实现非常灵活的类型安全的接口和极好的性能, 一些常见的工具比如Google Test, std::tuple, std::function 和 Bo...

2017-10-24 19:40:03

阅读数 140

评论数 0

C++风格_Lambda表达式

适当使用 lambda 表达式。别用默认 lambda 捕获,所有捕获都要显式写出来。定义: Lambda 表达式是创建匿名函数对象的一种简易途径,常用于把函数当参数传,例如:std::sort(v.begin(), v.end(), [](int x, int y) { return ...

2017-10-24 19:38:29

阅读数 128

评论数 0

C++风格_列表初始化

可以用列表初始化。 早在 C++03 里,聚合类型(aggregate types)就已经可以被列表初始化了,比如数组和不自带构造函数的结构体: struct Point { int x; int y; }; Point p = {1, 2}; C++11 中,该特性得到进一步的推广,任...

2017-10-23 19:12:54

阅读数 119

评论数 0

C++风格_auto

用 auto 绕过烦琐的类型名,只要可读性好就继续用,别用在局部变量之外的地方。定义: C++11 中,若变量被声明成 auto, 那它的类型就会被自动匹配成初始化表达式的类型。您可以用 auto 来复制初始化或绑定引用。vector<string> v; ... auto s1 =...

2017-10-23 19:10:01

阅读数 134

评论数 0

C++风格_sizeof

尽可能用 sizeof(varname) 代替 sizeof(type).使用 sizeof(varname) 是因为当代码中变量类型改变时会自动更新. 您或许会用 sizeof(type) 处理不涉及任何变量的代码,比如处理来自外部或内部的数据格式,这时用变量就不合适了。Struct data;...

2017-10-23 19:07:47

阅读数 119

评论数 0

C++风格_0, nullptr 和 NULL

整数用 0, 实数用 0.0, 指针用 nullptr 或 NULL, 字符 (串) 用 ‘\0’.整数用 0, 实数用 0.0, 这一点是毫无争议的.对于指针 (地址值), 到底是用 0, NULL 还是 nullptr. C++11 项目用 nullptr; C++03 项目则用 NULL, ...

2017-10-23 19:06:09

阅读数 97

评论数 0

C++风格_ 预处理宏

使用宏时要非常谨慎, 尽量以内联函数, 枚举和常量代替之. 宏意味着你和编译器看到的代码是不同的. 这可能会导致异常行为, 尤其因为宏具有全局作用域.值得庆幸的是, C++ 中, 宏不像在 C 中那么必不可少. 以往用宏展开性能关键的代码, 现在可以用内联函数替代. 用宏表示常量可被 const...

2017-10-23 19:05:41

阅读数 106

评论数 0

C++风格_64 位下的可移植性

代码应该对 64 位和 32 位系统友好. 处理打印, 比较, 结构体对齐时应切记: 对于某些类型, printf() 的指示符在 32 位和 64 位系统上可移植性不是很好. C99 标准定义了一些可移植的格式化指示符. 不幸的是, MSVC 7.1 并非全部支持, 而且标准中也有所遗漏, 所以...

2017-10-23 19:02:02

阅读数 190

评论数 0

C++风格_整型

C++ 内建整型中, 仅使用 int. 如果程序中需要不同大小的变量, 可以使用 for (unsigned int i = foo.Length()-1; i >= 0; --i) ...上述循环永远不会退出! 有时 gcc 会发现该 bug 并报警, 但大部分情况下都不会. 类似的 bu...

2017-10-23 18:56:10

阅读数 101

评论数 0

C++风格_constexpr

在 C++11 里,用 constexpr 来定义真正的常量,或实现常量初始化。定义: 变量可以被声明成 constexpr 以表示它是真正意义上的常量,即在编译时和运行时都不变。函数或构造函数也可以被声明成 constexpr, 以用来定义 constexpr 变量。优点: 如今 const...

2017-10-23 18:54:10

阅读数 114

评论数 0

C++风格_const用法

在任何可能的情况下都要使用 const. 此外有时改用 C++11 推出的 constexpr 更好。定义:在声明的变量或参数前加上关键字 const 用于指明变量值不可被篡改 (如 const int foo ). 为类中的函数加上 const 限定符表明该函数不会修改类成员变量的状态 (如 c...

2017-10-23 18:52:28

阅读数 96

评论数 0

C++风格_自增

对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.定义: 对于变量在自增 (++i 或 i++) 或自减 (–i 或 i–) 后表达式的值又没有没用到的情况下, 需要确定到底是使用前置还是后置的自增 (自减).优点: 不考虑返回值的话, 前置自增 (++i) 通常要比后置...

2017-10-23 18:50:21

阅读数 125

评论数 0

C++风格_类型转换

使用 C++ 的类型转换, 如 static_cast<>(). 不要使用 int y = (int)x 或 int y = int(x) 等转换方式; 定义:C++ 采用了有别于 C 的类型转换机制, 对转换操作进行归类. 优点:C 语言的类型转换问题在于模棱两可的操作; 有时是...

2017-10-22 17:31:54

阅读数 107

评论数 0

C++风格_异常

Google不使用 C++ 异常,这里也存在争议。。。 优点:异常允许应用高层决定如何处理在底层嵌套函数中「不可能发生」的失败(failures),不用管那些含糊且容易出错的错误代码(acgtyrant 注:error code, 我猜是C语言函数返回的非零 int 值)。 很多现代语言都用异...

2017-10-22 17:28:59

阅读数 177

评论数 0

C++风格_友元

允许合理的使用友元类及友元函数.通常友元应该定义在同一文件内, 避免代码读者跑到其它文件查找使用该私有成员的类. 经常用到友元的一个地方是将 FooBuilder 声明为 Foo 的友元, 以便 FooBuilder 正确构造 Foo 的内部状态, 而无需将该状态暴露出来. 某些情况下, 将一个单...

2017-10-22 17:27:33

阅读数 120

评论数 0

C++风格_变长数组和alloca()

不允许使用变长数组和 alloca().优点: 变长数组具有浑然天成的语法. 变长数组和 alloca() 也都很高效.缺点: 变长数组和 alloca() 不是标准 C++ 的组成部分. 更重要的是, 它们根据数据大小动态分配堆栈内存, 会引起难以发现的内存越界 bugs: “在我的机器上运...

2017-10-22 17:26:36

阅读数 253

评论数 0

C++风格_缺省参数

不允许使用缺省函数参数,少数极端情况除外。尽可能改用函数重载。优点: 当您有依赖缺省参数的函数时,您也许偶尔会修改修改这些缺省参数。通过缺省参数,不用再为个别情况而特意定义一大堆函数了。与函数重载相比,缺省参数语法更为清晰,代码少,也很好地区分了「必选参数」和「可选参数」。缺点: 缺省参数会干...

2017-10-22 17:25:20

阅读数 163

评论数 0

C++风格_函数重载

定义: 编写一个参数类型为 const string& 的函数, 然后用另一个参数类型为 const char* 的函数重载它:class MyClass { public: void Analyze(const string &text); void A...

2017-10-22 17:24:17

阅读数 151

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭