重提内联函数
发表时间:2006-09-17 22:15:32 关键词:C++,VC,Primer,MFC,编程
(点击:) 把这篇文章告诉我的QQ或MSN朋友
之所以在学习到“类”以后要重提内联函数,是因为定义类的成员函数与全局函数在这方面有区别。区别在于,如果把函数的实体放在类的定义内,则该函数将自动成为内联函数。如:
class MyClass
{
public:
void FunctionA(void);
void FunctionB(void)
{
cout << "这是内联函数。" << endl;
}
}
void MyClass::FunctionA(void)
{
cout << "这不是内联函数。" << endl;
}
类的成员函数也可以用inline关键字来指明它是内联函数,但是不加inline却未必不是内联函数。
那么,关于内联函数的另一个问题又要被重提了:内联函数是需要在编译时可见的。对于类的定义,我们通常将类本身的定义体放在h文件中,而将类成员函数的实体放在cpp文件中。这样做并不只是个建议,而是必需。除非整个程序很小,小到只有聊聊几个cpp文件,而且只有一个cpp要用到该类。
将成员函数的实体放在cpp文件中的目的是防止该函数实体被重复编译。如果放在h文件中,而这个h文件又被多个cpp包含,那么,每个cpp在编译时都将产生该函数的执行代码,在连接的时候就会出现函数命名冲突。
内联函数是不怕命名冲突的,相反。正因为它必须在编译每一个cpp文件时可见,所以这个函数的实体就必须放在h文件中。即使不像开头所示的例子那样将函数实体放在类的定义中,也必须放在h文件中。
本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
