在同一作用域内的几个函数名字相同但形参列表不同
当调用函数时,编译器会根据传递的实参推断调用哪个函数
不允许两个函数除了返回类型其他要素都相同
Record lookup(const Account &acct); Record lookup(const Account &);//省略了形参的名字 //两个函数时相同的,形参的名字不影响形参列表内容
顶层const不影响传函数的对象
一个拥有顶层const的形参无法和另外一个没有顶层const的形参区分开
Record lookup(Phone); Record lookup(const Phone);//重复声明了Record lookup(Phone) Record lookup(Phone*); Record lookup(Phone* const);//重复声明Record lookup(Phone*)
const为底层const时,对于接受引用或指针的函数来说,对象是常量还是非常量对应的形参不同
Record lookup(Phone*); Record lookup(const Phone&); Record lookup(Phone*) Record lookup(const Phone*)
作用:函数调用需要时间和空间的代价,为了解决函数调用效率问题
原理:以空间为代价,节约时间
1.内联函数适合规模较小且频繁的函数
2.内联函数中不能有switch和循环
如果一个函数的形参有默认值,那么该形参右边必须都有默认值
函数的定义和声明缺省函数,两者留其一
分享一个关于内存的题
int x1=30,x2=40; void sub(int x,int y) { x1=x;x=y;y=x1;//交换x,y,由于无返回值,只有全局变量x1被保存下来 } int main() { int x3=10,x4=20; sub(x3,x4);//x1=x3=30,x4=20 sub(x2,x1);//x1=x2=40,x1=40 cout<<x3<<x4<<x1<<x2;//10,20,40,40 }
strcpy函数原理
char*strcpy(char*strDest,const char * strSrc) { if(strDest==NULL || strSrc == NULL) return NULL; char*temp=strDest; while((*strDest++=&strSrc++)!='\0'); return temp; }