在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文件的方式编写程序;