栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++基础

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++基础

缺省参数(默认参数)

缺省参数:函数定义或声明为函数参数指定一个缺省值,在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则指定的实参

默认参数:当函数调用时没有指定实参默认使用的一个值

特征:

带参数的函数列表,必须从右向左添加默认值,也就是说为某个参数设置缺省值,则必须为它右边全部设置缺省值

对于实参列表,必须从左向右依次赋值给形参,不能跳过任何一个形参

void test1(int a=10, int b=20, int c=30)
{
	cout << a << " " << b << " " << c << endl;
}
void test2(int a, int b = 200, int c = 300)
{
	cout << a << " " << b << " " << c << endl;
}
//void test3(int a,int b=20,int c)//不允许的
int main()
{
	test1();
	//test1(10, , 20);//实参从左向右必须全部设置实参
	test2(10);
	return 0;
}
示例:获得前n个字符
char* left(const char* str, int n = 1)//返回前n个字符
{
	int i = 0;
	char* p=new char[n+1];
	for (i = 0; i < n && i < strlen(str); i++)
	{
		p[i] = str[i];//赋值字符串
	}
	while (i <= n)
	{
		p[i++] = '';//最后设置为''
	}
	return p;

}
int main()
{
	const int Arsize = 80;
	char sample[Arsize];
	cout << "Enter a string :n";
	cin.get(sample, Arsize);
	char* ps = left(sample, 4);
	cout << ps << endl;
	delete [] ps;//free old string 
	ps = left(sample);
	cout << ps << endl;
	delete[] ps;  //free new string
	return 0;
}

函数重载

函数重载:同一作用域函数名相同但形参列表不同(个数,类型不同,顺序不同)

void print(int a)
{
	cout << "void print(int a)" << endl;
}
void print(int a, double b)
{
	cout << "void print(int a, double b)" << endl;
}
void print(double a, int b)
{
	cout << "void print(double a, int b)" << endl;
}
int main()
{
	print(10);
	print(20, 1.1);
	print(1.1, 20);

	return 0;
}

 为什么c不支持函数重载,c++支持?

在c/c++需要经历以下几个阶段?
预处理:头文件展开,宏替换,条件编译,去掉注释*.i

编译:语法检查,生成汇编   *.s

汇编:生成二进制文件  *.o

链接:生成可执行文件   .exe

 

 

 编译运行生成.o文件 gcc -c fun.cpp 生成.o文件

objdump -d *.o文件生成反汇编

根据函数名修斯规则命名

在cpp中函数名后面会加上类型的首字母

在.c中则不做修改

 .c文件

 

c++内联函数

内联函数与常规函数的区别?
不在于编写方式,而在于c++编译器是如何将他们组合到程序中

常规函数:常规函数调用使程序跳转到另一个函数地址,并在函数时返回.

内联函数:替换函数调用,对于内联函数无需跳转另一个位置而是在相应位置展开 

 内联与宏

内联下:

      

 宏:

 

 宏的优点
  • 复用性强
  • 宏函数提高效率,减少栈帧建立

缺点:可读性差,没有类型检查,不方便调试

 内联函数:

空间换时间,省去调用函数额外开销,所以代码很长,递归函数不适宜作为内联函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号