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