成员函数除了说明和定义在类中之外,还有些什么特性,这是本节讨论的问题。
一、内联性和外联函数
类的成员函数可以分为内联函数和外联函数。内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。而说明在类体内,定义在类体外的成员函数叫外联函数。外联函数的函数体在类的实现部分。
内联函数在调用时不是像一般的函数那样要转去执行被调用函数的函数体,执行完成后再转回调用函数中,执行其后语句,而是在调用函数处用内联函数体的代码来替换,这样将会节省调用开销,提高运行速度。
内联函数与前面讲过的带参数的宏定义进行一下比较,它们的代码效率是一样的,但是内联函数要优于宏定义,因为内联函数遵循函数的类型和作用域规则,它与一般函数更相近,在一些编译器中,一旦关上内联扩展,将与一般函数一样进行调用,调试比较方便。
外联函数变成内联函数的方法很简单,只要在函数头前面加上关键字inline就可以了。
#include <iostream>
using namespace std
class A
{
public:
A(int x, int y) //内联函数
{
X=xY=y
}
int a() //内联函数
{
return X
}
int b() //内联函数
{
return Y
}
int c()
int d()
private:
int X,Y
}
//inline定义内联函数
inline int A::c()
{
return a()+b()
}
inline int A::d()
{
return c()
}
void main()
{
A m(3,5)
int I=m.d()
cout<<"d()return:"<<I<<endl
}
输出结果:
d()return:8
说明:类A中,直接定义了3个内联函数,又使用inline定义了2个内联函数。内联函数一定要在调用之前进行定义,并且内联函数无法递归调用。
区别就在于,运行时侯的效率与定义的方法不同。
内联在某些情况下有个好处就是“缓存” 外链太多的话也会影响到速度,因为增加了浏览器加载时的请求“迸发数”(浏览器同一时间的链接请求) link的href地址,script的src链接,包括img的src链接基础上都是页面加载时就请求的 比如某浏览器的并发上限是3个,图片如果不可避免,我们只考虑link和script,你可以去想想如果当link大于3的时候剩下的样式他会怎么去排队请求和加载,有的网站加载时 你会看到先是无样式的排版,然后才很快正常,有的甚至直接无样式了,这种状况代码问题外也基本上只可能在外链样式的情况下产生,出现一定的体验问题 当然,一切都不绝对,关键看具体的页面内容和结构的情况,有时候我们需要为重点而舍弃,有时候其实怎么样做关系都不大采纳哦
CSS代码外联,内联,嵌入式的区别为:优先级不同、声明不同、操作不同。
一、优先级不同
1、外联:外联的优先级最低。
2、内联:内联的优先级优先于外联,低于嵌入式。
3、嵌入式:嵌入式的优先级优先于内联和外联。
二、声明不同
1、外联:外联只可以多次声明单个属性值。
2、内联:内联可以一次声明多个属性值。
3、嵌入式:嵌入式可以一次声明多个属性值。
三、操作不同
1、外联:外联把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在<head>内(不是在<style>标签内)使用<link>标签将css样式文件链接到HTML文件内。
2、内联:内联把css代码直接写在现有的HTML标签(如p,span...etc)中。
3、嵌入式:嵌入式把css样式代码写在<style type="text/css"></style>标签之间。