文章目录

  • 1.内联函数
    • 1.1 什么是内联函数
    • 1.2 内联函数的声明
    • 1.3 内联函数的条件
  • 2.成员函数与内联函数
    • 2.1 内联成员函数
    • 2.2 判断成员函数时候为内联函数
  • 3. 虚函数可以声明为inline吗

1.内联函数

1.1 什么是内联函数

C++提供一种提高函数效率的方法,即在编译时将被调函数的代码直接嵌入到主调函数中,取消调用这个环节。这种嵌入到主调函数中的函数称为内联函数(inline function)。

1.2 内联函数的声明

在函数定义的类型前加上inline修饰符,定义形式为:

inline 返回类型 函数名(形式参数列表)
{函数体
}

1.3 内联函数的条件

内联函数中不允许用循环语句和switch语句。
内联函数的声明必须出现在内联函数第一次被调用之前。

#include<iostream>
using namespace std;
inline int result(int a, int b) {return a * a + b * b;
}
int main()
{cout << result(2, 4) << endl;return 0;
}

2.成员函数与内联函数

2.1 内联成员函数

类的成员函数可以指定为inline,即内联函数。
默认情况下,在类体中定义的成员函数若不包括循环等控制结构,符合内联函数要求时,
C++会自动将它们作为内联函数处理(隐式inline)。
也可以显式地将成员函数声明为inline。

2.2 判断成员函数时候为内联函数

判断成员函数是否是内联的,有以下几条:

符合内联函数要求,并且在类体中定义,自动成为内联的;符合内联函数要求,在类体显式指明inline,或在外部定义时显式指明inline,
或者同时显式指明,则函数是内联的;
class Data { //Data类定义
int getx() { return x;} //内联成员函数
inline int gety() { return y;} //显式指定内联成员函数
inline void setxy(int _x, int _y); //显式指定内联成员函数
void display();
int x, y;
};
inline void Data::setxy(int _x, int _y) //内联成员函数
{x=_x, y=_y;
}
void Data::display() //非内联成员函数
{… //函数体
}

3. 虚函数可以声明为inline吗

不能

虚函数用于实现运行时的多态,或者称为晚绑定或动态绑定。
而内联函数用于提高效率。内联函数的原理是,在编译期间,对调用内联函数的地方的代码替换成函数代码。
内联函数对于程序中需要频繁使用和调用的小函数非常有用。虚函数要求在运行时进行类型确定,而内敛函数要求在编译期完成相关的函数替换;

C++学习——内联函数相关推荐

  1. 内联函数(inline)详解

    为什么要有内联函数 在学习内联函数之前,大家可以写一个实现加法的宏ADD(),检测一下自己. 如果对宏等预编译知识不太熟悉的话,可以先看一下这篇文章:预编译--2.2.4 以下是一个正确的ADD宏: ...

  2. c++学习笔记内联函数,函数重载,默认参数

    c++学习笔记内联函数,函数重载,默认参数 1 inline内联函数 C++中的const常量可以替代宏常数定义,如: const int A = 3;  #define A 3 C++中是否有解决 ...

  3. C++内联函数学习总结

    C++中的内联函数inline总结 http://blog.csdn.net/coder_xia/article/details/6723387 突然看到C++Primer中讲到,对于vector的一 ...

  4. C++学习笔记之——引用 内联函数

     本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者 ...

  5. 超详细的C++入门学习(命名空间,缺省参数,内联函数,函数重载等)

    目录 前言 1. C++关键字 2. 命名空间 2.1定义命名空间 2.2使用using将命名空间中某个成员引入 2.3使用using namespace 命名空间名称 引入 3. C++输入& ...

  6. C++ 语言学习 day01 (linux ),基本输入输出错误输出函数,名字空间的含义,内联函数,缺省参数,引用 ,、new操作符

    1.介绍c++ C++头文件风格 c++ 老风格:以.h结尾 是c语言风格  stdio.h  (尽量不) c++的转换风格: 去掉.h 在文件名前加c 例如#include <cstdio&g ...

  7. C++学习笔记_3_ C++入门 内联函数

    C++学习笔记_3_ C++入门 内联函数 目录 C++学习笔记_3_ C++入门 内联函数 一.内联函数 1.查看方式 2.特性 宏的优缺点 C++有哪些技术替代宏? 一.内联函数 以inline修 ...

  8. C++内联函数的学习

    内联成员函数两种方式 实现的时候加inline    直接在类中给出实现方式 内联函数,题号效率,在编译的时候,将代码直接嵌入到调用的地方, 从而减少了函数调用的开销. 每调用一次,程序体积就会变大, ...

  9. C++学习笔记(八)——内联函数

    内联函数:内联函数实际上并不是真正的函数,它比较像define宏定义,它实际上就是将代码段直接替换到调用函数的地方,从而实现时间的节约. 使用:主要用在代码较短的函数中,同时不能用在递归函数中. 在函 ...

最新文章

  1. 每日一皮:公司来了个程序员鼓励师...
  2. 兰州计算机速成班都学什么,兰州当众讲话速成班
  3. 中国棉纺织工业发展状况及未来竞争格局报告2022-2028年
  4. EasyUI-datagrid-自动合并单元格(转)
  5. java11创建项目_2019-04-11 使用IDEA创建SpringBoot项目
  6. 简单描述char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别
  7. 数据只会告诉你该怎么走
  8. 打工人打工魂,打工人上人
  9. Linux图形界面的安装和卸载,在CentOS下安装和卸载图形化界面的方法
  10. 用 C# 实现带键值的优先队列
  11. java魔剑天使,血色天使魔剑官方版
  12. 拓端tecdat|数据盘点高校新生录取情况
  13. 网络地址转换—NAT——总结
  14. 照片放大模糊怎么变清晰?
  15. 计算机维修口诀,菜鸟必收藏:电脑故障维修技巧大集粹
  16. 【附源码】计算机毕业设计java中小学在线考试系统设计与实现
  17. 三维重建——孔洞填补算法
  18. MySQL数据库开发规范
  19. Excel.Application使用手册(API)
  20. 最简单的Document解析xml文件

热门文章

  1. LeetCode 网易-2. 古老的游戏机
  2. Python发送文本邮件
  3. LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)
  4. LeetCode 1273. 删除树节点(拓扑排序/DFS)
  5. LeetCode 389. 找不同(位运算)
  6. android model 设计,Android model层设计
  7. python自动化pdf报告_[Python] 自动化办公 PDF提取文字、表格、图片
  8. c语言中把一个数缩小十倍_C语言实例第04期,在控制台打印出著名的杨辉三角...
  9. 动态规划算法实验报告_强化学习之动态规划算法
  10. python2转python3代码_2to3 – 自动Python 2到3代码翻译 – 开发工具(Python教程)(参考资料)...