问题描述
|
有人可以帮助我清除此内容吗?
我使用添加成员函数Winzard向类添加函数。如果取消选中“内联”框,则仅在类名.h文件中显示如下所示的函数原型:
CBox operator+(const CBox& aBox) ;
在classname.cpp文件上,具有完整的功能:
CBox CBox::operator+(const CBox& aBox) {
return CBox();
}
但是,如果我选中“内联”框,则完整功能将显示在classname.h文件中,如下所示:
CBox operator+(const CBox& aBox)
{
return CBox();
}
并且在classname.cpp上没有任何显示。
我不确定是否是因为进行内联检查?
无论如何,这是使用内联函数与不是我需要担心的内联函数之间的巨大区别吗?
另一件事是,如果我选中“内联”框,则该函数为CBox operator + ......
但是,如果我取消选中“内联”框,则该函数为CBox CBox :: operator +。有什么不同的意思?
非常感谢你。
解决方法
当您选择嵌入式时,这意味着代码将被放置在被调用的位置。因此,整个实现都需要在头文件中。如果不选择内联,则它将被放置在cpp文件中,因为应编译并链接一个(只有一个)副本。
内联代码可能会使您的应用程序更大,但由于没有过程调用的开销,因此内联代码被认为更快。如果实现很小,请使用内联。
, 如果要内联函数,则编译器需要注意它。因此,您必须将其放在头文件中。
请注意,如果您启用了优化功能,则大多数最新的编译器都可以在需要时自动内联函数。