关闭

C++类的内联成员函数应放在哪

发表于:2013-3-15 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Bruce_Zeng    来源:51Testing软件测试网采编

  今天复习C++ Primer的时候,看到了关于C++类的内联成员函数的放置,应该放在头文件中。那么这到底是为什么呢?仅仅是一种代码规范问题还是必须这样做呢?

  下面我就来讲讲我自己的理解吧。要彻底理解这个问题,首先就要了解下函数的声明和定义了。我们知道,函数可以在多处声明,但只能在一个地方定义,不然就会出现重定义。大部分函数默认是外部链接,而inline函数默认为内部链接。也就是说inline函数只能在本文件中使用,对其他文件是不可见的。一般我们使用某个类的时候,都是在文件中加上该类的头文件,以便我们可以使用该类的接口。而我们类的成员函数的实现都是放在相应的.cpp文件中的,而在.h文件中声明。这样我们便可以通过.h文件中的成员函数的声明找到其定义,继而使用成员函数了。但如果将inline函数放在.cpp文件中,那么其只对.cpp文件有效,这样我们就无法访问它了。所以我们将其放在类的声明的头文件中,这样通过包含该头文件来使用它。

  下面写个实际的例子来说明一下,我先把内联函数放到类声明的头文件中:

/*test.h*/
#ifndef TEST_H
#define TEST_H

#include <iostream>
using std::cout;
using std::endl;

class test
{
public:
 test():x(10){}
 inline void print();
 void display (int y);
private:
 int x;
};

void test::print()
{
 cout << x << endl;
}

#endif

/*test.cpp*/
#include <iostream>
#include "test.h"
using std::cout;
using std::endl;

void test::display(int y)
{
 cout << x * y << endl;
}

/*main.cpp*/
#include <iostream>
#include "test.h"
using namespace std;

int main()
{
 test T;
 T.display(10);
 T.print();

 system("pause");
 return 0;
}

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号