C++类中显式定义内联函数

来源:互联网 发布:vb读取硬盘序列号 编辑:程序博客网 时间:2024/05/21 05:55

C++中类的内联成员函数的声明方式包括:显式声明和隐式声明。

将函数体直接放到类体内的声明方式即为隐式声明。这种声明方式简单。如下:

#ifndef Point_h_h
#define Point_h_h
class Point
{
 float x,y;

public:
 Point();
 Point(float a,float b);

 float GetX(void);
 float GetY(void);
 float Point::GetX(void){return x;}
};
#endif

显式声明在C++中(visual C++ 2008)正确的使用方式应该如下:

//Point.h
#ifndef Point_h_h
#define Point_h_h
class Point
{
 float x,y;

public:
 Point();
 Point(float a,float b);

 float GetX(void);
 float GetY(void);
};
#endif

inline float Point::GetX(void)
{
 return x;
}

 

//Point.cpp
#include "Point.h"
Point::Point()
{
 x = 0.0;
 y = 0.0;
}
Point::Point(float a, float b)
{
 x = a;
 y = b;
}

float Point::GetY(void)
{
 return y;
}

注意上面定义方式中,如果把GetX函数放到.CPP文件中定义时,单个文件进行编译,VC不会报错。但是对项目进行编译时系统将报错如下:

fatal error LNK1120: 2 unresolved externals

在网上搜索了很久,似乎没人遇见过。。。

最后在这个地方找到了答案:http://blog.csdn.net/testing2007/article/details/5256964,感谢testing2007这位仁兄!

原创粉丝点击