1、C++内联函数
1、C++内联函数的编译代码与其他程序代码“内联”起来了。也就是说,编译器将使用相应的函数代码替换函数调用。对于内联函数,程序无需跳到另一个位置处执行代码,然后再跳回来。因此,函数的运行速度比常规函数稍快,但代价是需要更多的内存。如果函数在10个不同的地方调用同一个内联函数,则该程序将包含该函数10个代码拷贝。
2、操作如下:
1、函数声明前加上inline;
2、函数定义前加上inline;
3、通常的做法是省略原型,将整个定义(即函数头和所有函数代码)放在本应提供原型的地方。(编译器不一定满足请求)。
内联函数不能递归。
4、inline double square(double x){ return x*x; }函数不应过大
1、int rats; int & rodents = rats;
上述引用声明允许rats与rodents互换,它们指向相同的值和内存单元。
2、引用于指针的区别。
1、声明引用时进行初始化。Int & robent; robent = rat; //wrong
2、不能改变引用对象,否则原来的对象也会被更改。
Int rats = 100;
Int bunies = 50;
Int & robent = rats;
robent = bunies; ------------robent = rats = 50; //rats也变
3、如果实参与引用参数不匹配,C++将生成临时变量。仅当参数为const引用时,C++才允许这样做。
Double refcube( const double &ra); 一下情况将生成临时变量:
1、Long edge; Double c1 = refcube( edge ); //类型不对
2、Double c2 = refcube( 7.0 ); //类型对,但没有名称,下例也是
3、doubel side = 10.0; Double c3 = refcube( side + 10.0);
这些情况下,编译器将生成一个临时匿名变量,并让ra指向它,这些临时变量,只在函数调用期间存在,此后编译器可以随意的删除。
3、将引用用于结构
应避免返回当函数终止时不在存在的内存单元引用(如函数中定义的结构体)。解决方法有:
1、返回一个作为参数传递给函数的引用。
2、使用new 分配内存。
默认参数值的是当函数调用中省略了实参时自动使用的一个值。
对于带参数列表的函数,必须从右向左添加默认值,实参按从左到右赋值。
函数重载的关键是函数的参数列表——也称为函数特征标。 而不是取决于函数类型。
C++如何跟踪每一个重载函数呢?