`
ErinToJerry
  • 浏览: 57093 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

C++中内联函数inline是什么样的

阅读更多
内联函数(inline function与一般的函数不同,不是在调用时发生控制转移而是在编译阶段将函数体嵌入到每一个调用语句中

内联函数(inline function)与编译器的工作息息相关。编译器会将程序中出现内联函数的调用表达式用内联函数的函数体来替换。

/**
*在类里定义的成员函数会被隐含指定为内置函数
*/

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class CStudent
{
public:
	void display()
	{
		cout<<"name:"<<name<<endl;
	}
	string name;
};

int main(int argc, char* argv[])
{
	CStudent myStudent;
	myStudent.name="Erin";
	myStudent.display();
	return 0;
}
 
/**
*类外定义的函数用inline指定为内置函数
*/

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class CStudent
{
public:
	inline void display();
	string name;
};

inline void CStudent::display()
{
	cout<<"name:"<<name<<endl;
}

int main(int argc, char* argv[])
{
	CStudent myStudent;
	myStudent.name="Erin";
	myStudent.display();
	return 0;
}
 
/**
*无内置函数
*既没有在类内定义函数,也没有用inline在类外定义函数
*/

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class CStudent
{
public:
	void display();
	string name;
};

void CStudent::display()
{
	cout<<"name:"<<name<<endl;
}

int main(int argc, char* argv[])
{
	CStudent myStudent;
	myStudent.name="Erin";
	myStudent.display();
	return 0;
}
 

内联函数的优点:
     首先来看函数调用的实质,其实是将程序执行转移到被调用函数所存放的内存地址,将函数执行完后,在返回到执行此函数前的地方。这种转移操作需要保护现场(包括各种函数的参数的进栈操作),在被调用函数代码执行完后,再恢复现场。但是保护现场和恢复现场需要较大的资源开销。
     特别是对于一些较小的调用函数来说(如上边代码中的display()函数),若是频繁调用,函数调用过程甚至可能比函数执行过程需要的系统资源更多。所以引入内联函数,可以让程序执行效率更高。

内联函数的缺点:
      如果调用内联函数的地方过多,也可能造成代码膨胀。毕竟,编译器会把内联函数的函数体嵌入到每一个调用了它的地方,重复地嵌入。


1
0
分享到:
评论

相关推荐

    内联函数inline使用实例

    内联函数(inline)在C++编程语言中是一种优化手段,用于提高程序的运行效率。它的主要作用是在编译期间将函数体插入到每个调用该函数的地方,从而避免了函数调用时的开销,如函数调用的压栈、跳转以及返回等过程。...

    c++中的内联函数inline用法实例

    "C++中的内联函数inline用法实例" C++中的内联函数是一种特殊的函数类型,它可以在编译期间将函数体替换到调用处,以减少函数调用时的开销。下面我们将详细介绍C++中的内联函数inline用法实例,以及相关知识点。 ...

    内联函数-14.08.25

    内联函数是C++语言中的一个重要特性,它主要用于提高程序的运行效率。通过在函数调用处直接嵌入函数体,内联函数避免了传统函数调用带来的额外开销(如参数压栈、返回地址保存等)。本篇文章将详细介绍内联函数的...

    内联函数体要放在头文件

    内联函数(inline function)是C++中的一种特殊函数,它允许编译器在编译时将函数调用替换为函数体本身的代码,从而避免了通常的函数调用机制(如参数压栈、返回地址保存等)所带来的额外开销。这种替换过程称为内联...

    三内联函数inlinefunction四引用和数值传递方式具体PPT课件.pptx

    内联函数是C++中一个重要的优化手段,用于提高程序执行效率。在C++中,`inline`关键字用来修饰函数,提示编译器尽可能地在调用点将函数体展开,而不是通过传统的函数调用机制。这样可以避免函数调用时的开销,如栈...

    如何使用内联函数,请看这个资料

    内联函数(inline function)是 C++ 语言中的一种特殊函数,具有优缺点,今天我们将深入探究内联函数的定义格式、编程风格、优缺点、使用注意事项,以及与宏的区别。 首先,内联函数的定义格式是将关键字 `inline` ...

    三内联函数inlinefunction四引用和数值传递方式具体PPT学习教案.pptx

    在C++中,使用`inline`关键字来声明一个函数为内联函数。例如: ```cpp inline void swap(int x, int y) { int t = x; x = y; y = t; } ``` 内联函数的主要目的是避免函数调用时的栈空间管理和返回地址的保存,这...

    c++中的宏、内联函数和宏的比较

    ### C++中的宏、内联函数和宏的比较 在C++编程中,宏和内联函数是提高代码效率和可读性的两种常见方法。它们各自有着不同的应用场景和特点,了解这些差异对于编写高质量的C++代码至关重要。 #### 宏(Macro) 宏...

    C语言中的内联函数(inline)与宏定义(#define)详细解析

    内联函数是C++引入的概念,尽管也可以在C语言中使用。它在编译时将函数体插入到每个调用点,消除了函数调用的开销,从而提高了执行效率。内联函数的定义类似于普通函数,但前面会加上`inline`关键字。例如: ```c ...

    c++内联函数(inline)使用详解

    总的来说,内联函数是C++中提高效率的一种手段,它可以替代预处理宏,同时避免宏的缺点,提供更安全、可维护的代码。然而,使用内联函数时需要注意其限制,避免不必要的代码膨胀,以达到最佳的性能和代码质量。

    内联函数笔记

    内联函数是C++编程语言中的一种特性,它主要用于提高程序执行效率,特别是在频繁调用的小型函数中。内联函数的设计目标是替代C语言中的宏定义,克服宏定义的一些弊端,同时保留其效率优势。 在C语言中,宏定义(如`...

    内联函数和宏的区别的分析与总结

    内联函数和宏在C++编程语言中是两种常见的代码优化技术,它们都可以用来替代函数调用,以减少函数调用带来的开销。然而,两者在实现方式、编译过程和功能特性上有着显著的区别。 首先,我们来看内联函数。内联函数...

    VC中内联函数的定义和案例共3页.pdf.zip

    内联函数是C++编程语言中的一个重要特性,它在Visual C++(简称VC)环境中被广泛应用。内联函数的主要目的是为了提高程序的运行效率,通过将函数体插入到调用处来避免函数调用时的开销。这篇文档“VC中内联函数的...

    C++ 实验1 重载函数和内联函数的应用 

    在C++编程语言中,重载函数和内联函数是两个重要的概念,它们极大地提高了代码的可读性和执行效率。本实验旨在通过实际操作来帮助学生深入理解和掌握这两个概念。 首先,我们来看重载函数。函数重载允许在同一作用...

    详解C++中的内联函数和函数重载

    这种在函数调用处直接嵌入函数体的函数称为内联函数(inline function),又称内嵌函数或内嵌函数。 指定内联函数的方法很简单,只需要在定义函数时增加 inline 关键字。 注意:是在函数定义时增加 inline 关键字,...

    C++内联汇编示例

    C++内联汇编是一种将汇编语言代码嵌入到C++程序中的技术,它允许开发者在高级语言中直接插入低级操作,以优化特定性能关键的代码段或解决特定平台的问题。本工程通过一系列示例,展示了如何在C++程序中使用内联汇编...

    内联函数&类的成员函数

    内联函数(inline function)是C++中的一种优化手段,其目的是减少函数调用的开销。当一个函数被声明为内联时,编译器会在调用该函数的地方直接插入函数体的代码,从而避免了普通函数调用过程中的跳转、参数压栈、...

    52_虚函数可以声明为inline吗1

    在C++编程语言中,内联函数(inline)和虚函数(virtual)是两种非常重要的特性,它们分别用于优化性能和实现多态性。然而,它们的性质和使用场景是不同的,这导致了某些限制,比如虚函数通常不建议声明为内联。下面...

Global site tag (gtag.js) - Google Analytics