http://blog.csdn.net/chinabinlang/article/details/8543867 


在C++中,最长用的编程方式是:


.h:头文件中添加 变量,类等等一下对象或 函数的声明;头文件中添加宏定义 或 #pragma once(VC 中),头文件只编译一次;


.cpp:文件中添加 头文件中声明的具体实现;


然后工程中添加 h文件 和 cpp文件;(头文件可以不添加到工程中,但cpp文件不添加,编译错误);


 


但是:如果我想,直接在.h头文件 中 直接实现 函数;这样的头文件不用添加到工程中,只需要 #include "头文件.h",就可以使用函数了;


举个例子:


//************************************************************************************************


// tool.h, 实现工程中一些常用的全局函数 或 工具函数;


boo convert_bmp_to_jpg(  const char * pstrBMP,  const char * pstrJPG )


{


       ......


       ......


     


      return true;


}


//************************************************************************************************


 


这样 tool.h 头文件, 我可以在工程中 需要的文件中 #include“tool.h", 就可以直接用boo convert_bmp_to_jpg(  const char * pstrBMP,  const char * pstrJPG );


但是,当多个工程中的文件包含tool.h时,编译连接会提示x.obj中已经包含boo convert_bmp_to_jpg(  const char * pstrBMP,  const char * pstrJPG )的错误;


 


最简单的解决方法:将函数设置为 static函数,或者inline函数,这样就不会有问题 了;而不需要添加.cpp文件,然后添加到工程中;



上述函数可以修改为:



static boo convert_bmp_to_jpg(  const char * pstrBMP,  const char * pstrJPG )


{


       ......


       ......


     


      return true;


}


或者


inline boo convert_bmp_to_jpg(  const char * pstrBMP,  const char * pstrJPG )


{


       ......


       ......


     


      return true;


}



 




关于类的处理方法:


一般情况下, 创建一个类的声明在.h文件中, 实现在.cpp文件中,但是如果想在一个.h文件中声明同时实现一个类,这样就可以很方便的#include就可以用了;


一般的处理方法是在类中直接实现类:如:


class CShow


{


public:


CShow(){}


~CShow(){}



public:


 void show()


        {


               cout << "show ";


        }


}


一般上述这个方法就可以在.h文件中直接实现类了,其它地方就可以只包含这个类的头文件就可以了;


但是这个这样写有一个两个缺点:


1: 稍有改动,工程编译时间长;(这个解决方法只可以通过.h中声明类, .cpp中实现类解决);


2:如果类中的函数太多了,会使这个类看起来很乱;


关于缺点2的解决方法可以通过在头文件中在成员函数的实现前天就inline,这样就可以用一个头文件实现了,同时让类的声明更清晰;


因为类的成员函数默认就是inline函数; 在开源工程jrtplib中的类的声明和实现就是这样的方法,可以参考;但是注意类的构造函数和析构函数在.cpp中实现;


如:


class CShow


{


public:


CShow(){}


~CShow(){}



public:


 void show();


}



inline void CShow::show()


        {


               cout << "show ";


        }



关于更多inline函数,可以在网上搜索,和参考这篇文章http://www.cnblogs.com/berry/articles/1582702.html




总结:


关于上述的方法,只是为了一些技术的说明和应用的简单, 仅仅对一些工具函数和工具类方便一点;


这里还是建议写函数或类的时候,严格按照.h和.cpp文件的方式编写程序;