(1)什么是内联函数?
(2)为什么要引入内联函数?
(3)为什么inline能取代宏?
(4)内联函数和宏的区别?
(5)什么时候用内联函数?
(6)如何使用内联函数?
(7)内联函数的优缺点?
(8)如何禁止函数进行内联?
(9)注意事项:
(1)什么是内联函数?
内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。
(2)为什么要引入内联函数?
当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题。另外,前面我们讲到了宏,里面有这么一个例子:
#define ABS(x) ((x)>0? (x):-(x))
当++i出现时,宏就会歪曲我们的意思,换句话说就是:宏的定义很容易产生二意性。
我们可以看到宏有一些难以避免的问题,怎么解决呢?前面我们已经尽力替换了。
下面我们用内联函数来解决这些问题。
(3)为什么inline能取代宏?
1、 inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,效率也很高。
2、 很明显,类的内联函数也是一个真正的函数,编译器在调用一个内联函数时,会首先检查它的参数的类型,保证调用正确。然后进行一系列的相关检查,就像对待任何一个真正的函数一样。这样就消除了它的隐患和局限性。
3、 inline 可以作为某个类的成员函数,当然就可以在其中使用所在类的保护成员及私有成员。
(4)内联函数和宏的区别?
内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。内联函数与带参数的宏定义进行下比较,它们的代码效率是一样,但是内联欢函数要优于宏定义,因为内联函数遵循的类型和作用域规则,它与一般函数更相近,在一些编译器中,一旦关上内联扩展,将与一般函数一样进行调用,比较方便。
(5)什么时候用内联函数?
内联函数在C++类中,应用最广的,应该是用来定义存取函数。我们定义的类中一般会把数据成员定义成私有的或者保护的,这样,外界就不能直接读写我们类成员的数据了。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这些读写成
员函数定义成内联函数的话,将会获得比较好的效率。
Class A
{
Private:
int nTest;
Public:
int readtest() { return nTest;}
void settest(int I) { nTest=I; }
}
(6)如何使用内联函数?
我们可以用inline来定义内联函数。
inline int A (int x) { return 2*x; }
不过,任何在类的说明部分定义的函数都会被自动的认为是内联函数。
(7)内联函数的优缺点?
我们可以把它作为一般的函数一样调用,但是由于内联函数在需要的时候,会像宏一样展开,所以执行速度确比一般函数的执行速度要快。当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。(换句话说就是,你使用内联函数,只不过是向编译器提出一个申请,编译器可以拒绝你的申请)这样,内联函数就和普通函数执行效率一样了。
(8)如何禁止函数进行内联?
如果使用VC++,可以使用/Ob命令行参数。当然,也可以在程序中使用 #pragma auto_inline达到相同的目的。
(9)注意事项:
1.在内联函数内不允许用循环语句和开关语句。
2.内联函数的定义必须出现在内联函数第一次被调用之前。
分享到:
相关推荐
内联函数是C++语言中的一个重要特性,它主要用于提高程序的运行效率。通过在函数调用处直接嵌入函数体,内联函数避免了传统函数调用带来的额外开销(如参数压栈、返回地址保存等)。本篇文章将详细介绍内联函数的...
内联函数(inline function)是C++中的一种特殊函数,它允许编译器在编译时将函数调用替换为函数体本身的代码,从而避免了通常的函数调用机制(如参数压栈、返回地址保存等)所带来的额外开销。这种替换过程称为内联...
内联函数(inline function)是 C++ 语言中的一种特殊函数,具有优缺点,今天我们将深入探究内联函数的定义格式、编程风格、优缺点、使用注意事项,以及与宏的区别。 首先,内联函数的定义格式是将关键字 `inline` ...
内联函数及三种重载代码,C++实习经常用到的代码内容
C++内联汇编是一种将汇编语言代码嵌入到C++程序中的技术,它允许开发者在高级语言中直接插入低级操作,以优化特定性能关键的代码段或解决特定平台的问题。本工程通过一系列示例,展示了如何在C++程序中使用内联汇编...
内联函数和普通函数是C++编程中两种不同的函数实现方式,它们在程序性能和内存使用上有显著区别。内联函数的主要目的是为了提高程序的执行效率,通过避免函数调用时的开销,如参数传递、函数调用的返回过程等。而...
在C++编程语言中,内联函数的引入主要与宏函数的缺陷有关。宏函数是C++中的一个预处理器特性,允许程序员定义可替换的文本片段。然而,宏函数在某些情况下存在一些固有问题,这使得C++引入了内联函数作为更安全、更...
内联函数是C++编程语言中的一种特性,它主要用于提高程序执行效率,特别是在频繁调用的小型函数中。内联函数的设计目标是替代C语言中的宏定义,克服宏定义的一些弊端,同时保留其效率优势。 在C语言中,宏定义(如`...
预处理宏和内联函数在C/C++编程中都是为了提升程序效率而设计的工具,但它们在使用上有着本质的区别。本文将深入探讨这两种技术,帮助开发者更好地理解和利用它们。 首先,预处理宏是一种在编译之前进行的文本替换...
内联函数和宏在C++编程语言中是两种常见的代码优化技术,它们都可以用来替代函数调用,以减少函数调用带来的开销。然而,两者在实现方式、编译过程和功能特性上有着显著的区别。 首先,我们来看内联函数。内联函数...
### C++中的宏、内联函数和宏的比较 在C++编程中,宏和内联函数是提高代码效率和可读性的两种常见方法。它们各自有着不同的应用场景和特点,了解这些差异对于编写高质量的C++代码至关重要。 #### 宏(Macro) 宏...
内联函数是C++编程语言中一种优化技术,它的主要目的是减少函数调用时的开销,提升程序的运行效率。内联函数的工作原理与预处理宏有些相似,但克服了宏的一些缺点。 预处理宏在编译之前进行文本替换,它们能够提高...
在C++编程语言中,重载函数和内联函数是两个重要的概念,它们极大地提高了代码的可读性和执行效率。本实验旨在通过实际操作来帮助学生深入理解和掌握这两个概念。 首先,我们来看重载函数。函数重载允许在同一作用...
"C++中的内联函数inline用法实例" C++中的内联函数是一种特殊的函数类型,它可以在编译期间将函数体替换到调用处,以减少函数调用时的开销。下面我们将详细介绍C++中的内联函数inline用法实例,以及相关知识点。 ...
内联函数(inline)在C++...以上就是关于内联函数`inline`在C++中的使用实例和相关知识点的详细说明,希望能帮助你理解和应用这一技术。在实际编程中,应结合具体需求和编译器特性,灵活运用内联函数来提升程序性能。
内联函数是C++编程语言中一种优化技术,它的主要目的是减少函数调用带来的开销,提高程序执行的效率。函数调用通常涉及到函数调用的压栈、跳转、返回等多个步骤,这些步骤在频繁调用小规模函数时会消耗一定的时间。...
C++ Hook(钩子)编程,通过内联汇编,使类成员函数代替全局函数(静态函数) 本文研究了C++ Hook(钩子)编程中,使类成员函数代替全局函数(静态函数)的技术。通过内联汇编,构造类对象独享的函数(委托),完成了类成员...
内联函数是C++编程语言中的一个重要特性,它在Visual C++(简称VC)环境中被广泛应用。内联函数的主要目的是为了提高程序的运行效率,通过将函数体插入到调用处来避免函数调用时的开销。这篇文档“VC中内联函数的...
在C++编程中,内联函数是一种优化技术,旨在提高程序的执行效率,尤其是对于小型功能的实现。内联函数的基本概念是通过在编译时将函数体插入到每个调用点来消除函数调用时的开销,而不是在运行时通过栈帧管理进行...