inline内联函数
- inline只是对编译器的剑意,由编译器决定是否在编译阶段将之处理为内联函数
- 内联函数只在release版本下有效,在debug版本下不起作用
- inline函数是在编译阶段,对代码进行展开,也因此,内联函数减少了函数调用的消耗,且因此,内联函数在编译阶段是不会产生函数符号的。
- 与宏的区别:(1)inline函数可以调试
(2)inline函数时一个独立的函数模块,而宏是完全的字符替换,相对而言,宏是不如内联函数安全的。
static
全局变量:
全局变量有了static修饰,该全局变量只能在当前文件内使用,也因此,多个源文
件可以定义同名static全局变量而不用担心出现重复定义。
普通局部变量:
有static修饰,普通局部变量由本来入栈的指令变为了存放在.data或是.bss段的数
据,程序一启动,便会拥有内存,且生存周期变长。
普通函数
普通函数只能在当前文件内调用,不会参与链接时候的符号解析。
类的成员方法
该方法调用时候不会产生this指针,因此调用时候不在依赖类的对象,调用该类函
数使用类的作用域符号调用即可
类的成员变量
成员变量不再属于类生成的对象,而是属于整个类,相当于作用于类内部的全局变量。其可以通过类的作用域直接访问,但其必须在类外进行初始化。
const
C语言之中,const定义的是常变量
C++中,const用来定义常量,编译过程中,所有使用常量名字的地方,常量都会被常量的初始值直接替换掉。
不过其也可以用来定义常变量。
int b=10; const int a=b;这样定义出的a便是一个常变量。
在const修饰指针的时候,会有如下几种常见错误:
const int * -> int *
const int ** -> int**
int ** -> const int **
int * const * -> int**
const修饰成员方法
成员方法变为常成员方法。
常成员方法只能访问其他成员,而不能修改其他成员;
类的普通对象与常对象都能访问常方法,但是常对象只能访问常成员方法。
const修饰成员变量
成员变量变为常成员变量。
常成员的初始化必须在类的构造函数的参数列表之内,否则会出错。
ps:
static与const不能在类内修饰同一方法