高质量C C++编程指南
- 格式:pdf
- 大小:652.75 KB
- 文档页数:84


inline内联函数
内联函数:
(1) 内联函数定义和作⽤:
将⼀个函数声明为inline,那么函数就成为内联函数。内联函数通常就是它在程序中每个调⽤点上“内联地”展开。从定义上看,内联函数跟⼀
般函数不⼀样,⼀般函数调⽤的时候是需要调⽤开销的(⽐如出栈⼊栈等操作),内联函数从定义上看更像是宏,但是跟宏不⼀样。
内联函数的作⽤主要就是使⽤在⼀些短⼩⽽使⽤⾮常频繁的函数中,为了减少函数调⽤的开销,为了避免使⽤宏(在c++中,宏是不建议使
⽤的)。⽐如内联函数inline int func(int x){return x*x;} 在调⽤的时候cout<
cout<<(x*x)<
(2) 内联函数相对于宏的区别和优点:
从上⾯的分析中,可以看出,内联函数在表现形式上与宏很类似。但是内联函数和宏之间的区别很明显。宏是在预处理时进⾏的机械替换,
内联是在编译时进⾏的。内联函数是真正的函数,只是在调⽤时,没有调⽤开销,像宏⼀样进⾏展开。内联函数会进⾏参数匹配检查,相对
于带参数的宏有很好的优点,避免了处理宏的⼀些问题。
(3) 如何使⽤内联函数和禁⽌内联:
要让⼀个函数称为内联函数,有两种⽅法:⼀种是把函数加上inline关键字;⼀种是在类的说明部分定义的函数,默认就是内联的。
要禁⽌编译器进⾏内联,可以使⽤#pragma auto_inline编译指令或者改变编译参数。
(4) 内联函数注意事项:
(1) 内联函数⼀定会内联展开吗?答案是否定的。对于内联函数,程序只是提供了⼀个“内联建议”,即建议编译器把函数⽤内联展开,
但是真正是否内联,是由编译器决定的,对于函数体过⼤的函数,编译器⼀般不会内联,即使制定为内联函数。
(2) 在内联函数内部,不允许⽤循环语句和开关语句(if或switch)。内联函数内部有循环和开关,也不会出错,但是编译器会把它当
做⾮内联函数的。
(3) 关键字inline必须与函数定义体放在⼀起才能使函数真正内联,仅把inline放在函数声明的前⾯不起任何作⽤。因为inline是⼀种⽤
Virtual是C++ 机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在 Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见Inside the C++
Object Model ,Addison Wesley 1996)
//---------------------------------------------------------
·class Base
{
public:Base(){}
public:
virtual void print(){cout<<"Base";}
};
class Derived:public Base
{
public:Derived(){}
public:
void print(){cout<<"Derived";}
};
int main()
{
Base *point=new Derived();
point->print();
}
//---------------------------------------------------------
Output:
Derived
//---------------------------------------------------------
这也许会使人联想到函数的重载,但稍加对比就会发现两者是完全不同的:
(1) 重载的几个函数必须在同一个类中;
覆盖的函数必须在有继承关系的不同的类中
由于文件太大,不好上传,我已传到网盘,以下是图书信息与地址:
书名:编程精粹:编写高质量C语言代码(中文版)(pdf扫描版)
下载地址:/file/be8abzi8
详细信息:/view/2534002.htm
书名:The C programming language(中文版)(pdf文字版)
下载地址:/file/anhb23sc
详细信息:/view/5012996.html
书名:c程序设计语言(第二版)(中文版)(pdf扫描版)
下载地址:/file/e7z20igs
详细信息:/view/5012996.html
附:两个是一样的书……
书名:C语言程序设计_现代方法(第一版)
下载地址:/file/e7z2002a
详细信息:/view/2220235.html#2
书名:C语言程序设计_现代方法(第2版)].(美)金.(扫描版)
下载地址:/file/c2dvwkx2
详细信息:/view/2220235.html
书名:高质量程序设计指南.C/C++语言(第三版)]林锐(扫描版)
下载地址:/file/e7z20nmz
详细信息:/view/2586529.html
书名:C.Primer.Plus(第五版)中文版(扫描版)
下载地址:/file/c2dvwr6g
详细信息:/view/1774686.htm
书名:C标准库(中文版)(扫描版)
下载地址:/file/e7z208jy
详细信息:/view/2658820.htm
书名:C和指针(中文版)(扫描版)
下载地址:/file/be8ab9zk
详细信息:/view/2533714.htm
书名:c陷阱与缺陷(中文版)(扫描版)
下载地址:/file/e7z207ic
详细信息:/view/2013532.htm
书名:C语言参考手册第五版(中文版)
下载地址:/file/be8ab1le
详细信息:/view/1967172.htm
游戏引擎编程基础指南
第一章 游戏引擎概述 ..................................................................................................................... 2
1.1 游戏引擎的定义与作用 ................................................................................................... 2
1.2 常见游戏引擎简介 ........................................................................................................... 3
第二章 游戏引擎架构 ..................................................................................................................... 3
2.1 游戏引擎的核心组件 ....................................................................................................... 3
2.2 游戏引擎的层次结构 ....................................................................................................... 4
2.3 游戏引擎的模块化设计 ................................................................................................... 4