如果在将函数添加到类时取消选中内联框,则在classname.h中仅需要函数原型

问题描述

| 有人可以帮助我清除此内容吗? 我使用添加成员函数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文件中,因为应编译并链接一个(只有一个)副本。 内联代码可能会使您的应用程序更大,但由于没有过程调用的开销,因此内联代码被认为更快。如果实现很小,请使用内联。     ,        如果要内联函数,则编译器需要注意它。因此,您必须将其放在头文件中。 请注意,如果您启用了优化功能,则大多数最新的编译器都可以在需要时自动内联函数。