c++是个无底洞

Overview

工程文件组织

c++文件后缀名

  1. 源文件可以是.cpp or .cc,Google code style 推荐使用的是 .cc,但是好像大家学习使用的都是.cpp.
    c++源文件后缀
  2. 头文件: 很多人认为头文件就是.h,其实要更复杂一些。如果你用的是纯c++,对很多编译器来讲其实无所谓你用什么后缀,都能识别为c++代码; 但是如果你c和c++混编,就需要区分(c++ 用hpp、h++ etc. ),如果都用.h, 类似
#ifdef CPP
extern "c" {
#endif
#include "xxx.h"  /*The c header file*/
#ifdef CPP
}
#endif

.hpp/.hh/.H/.hxx/.h++ 是 C++ 的头文件, .h 不是, 只不过是习惯成自然。

to be classified

  • 三种实现方法的比较(initializer_list标准库类型;<stdarg.h> in C;C++泛型可变参数模板)
      以上提到的三种方法都可以实现变参函数。但三种方法都有其各自的有点和局限性,在选择时可以从以下几个方面考虑:
      1. 若非必要,不要使用可变参数函数。应该首先考虑函数重载等其他方法。
      2. 除非需要兼容C语言编译器,否则不要使用可变参数宏。应为这种方法最不安全;尤其是当参数为对象时这种方法易产生各种问题。毕竟这些宏是为C语言设计的,C语言中没有对象。
      3. 如果参数类型相同且C++11可用,则通过声明形参为initializer_list往往是最简单、最有效的办法
      4. 变参模板看似最为强大。参数的类型可以不同、比可变参数宏更加安全并且可以自动推断参数类型和参数个数。但考虑到模板会为每一个不同的实例生成代码,如果函数的实例过多可能会使代码体积增大。另外,依靠递归使得功能具有局限性,并且效率也会受到影响。
  • hpp file

实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值