游戏开发 c++基础学习 笔记摘要第16天

函数重载

在同一作用域内的几个函数名字相同但形参列表不同
当调用函数时,编译器会根据传递的实参推断调用哪个函数

不允许两个函数除了返回类型其他要素都相同

Record lookup(const Account &acct);
Record lookup(const Account &);//省略了形参的名字
//两个函数时相同的,形参的名字不影响形参列表内容

重载和const形参

顶层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*)

内联函数(inline函数)

作用:函数调用需要时间和空间的代价,为了解决函数调用效率问题
原理:以空间为代价,节约时间
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;
}
上一篇:record


下一篇:项目实训-10