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

(入门自用)C++ 输入输出+缺省参数+函数重载+引用(一)

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

(入门自用)C++ 输入输出+缺省参数+函数重载+引用(一)

输入输出
int main()
{
//特点是自动识别类型
    int i;
	double d;
	//  >>  流提取
	cin >> i >> d; 


	//  <<   流插入  endl 等价于 'n' 
    cout << i << endl;把i输出
	cout << d << endl;


	return 0;
}
一.缺省参数
(一)

给一个函数

void Func(int a=0)
{
	cout << a << endl;
}
int main()
{
	Func(1);
	Func(2);
	Func(3);

	Func();//缺省 用的是函数里面赋的那个值 0
    return 0;
}
(二)全缺省 
void TestFunc(int a = 10, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl< 
(三)半缺省 
//半缺省  缺少部分参数 必须从右往左连续缺省 不能间隔
void TestFunc2(int a, int b = 20, int c = 30)
{
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl << endl;
}
int main()
{

    //TestFunc2(); 编不过
    //TestFunc2(,2,3); 编不过
	TestFunc2(1,2);// 1 2 30
	TestFunc2(1,2,3);// 1 2 3 

	return 0;
}

注意:

1.缺省就是给函数的形参赋值.
2.不能在声明和定义同时出现 暨 两个都赋有初始值.
3.在缺省参数时,在声明中缺省.

二.函数重载

定义:即一个函数有多个意思
        c++中允许 在同一作用域中 名称相同的多个函数.这些参数形参(个数,顺序,类型至少有一个)不同.

int Add(int left, int right)
{
	return left + right;
}
double Add(double left, double right)
{
	return left + right;
}
int main()
{
	cout << Add(1, 2) << endl;
	cout << Add(1.1, 2.2) << endl;
	return 0;
}

函数名相同的两个函数会因为类型不同而区分开.上述中顺序不同指的是:数据类型的顺序为 

doule int 和 int double

作用

在调用输出类型函数时尤为方便

void Swap(double* p1, double* p2)
{
	double tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
void Swap(int* p1, int* p2)
{
	int tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
int main()
{
	int a = 1, b = 2;
	double c = 1.1, d = 2.2;
	Swap(&a, &b);
	Swap(&c, &d);//方便使用

	return 0;
}
三.引用

定义:给已存在的变量取了一个别名. int& x=a;给a起了个外号叫x

int main()
{
	int a = 0;	
    int& b = a;//&放在类型后面 引用
	cout << &b << endl;//取地址并打印
	a++;
	b++;//效果和a++一样 二者控制同一块空间
	int x = 10;
	b = x;//b不是x的别名 这里是赋值的意思
}

注意

1.引用在定义时必须初始化 即不能 int& b
2.一个变量可以有多个引用,给别名取别名仍然是同一块空间;

三.2.作用

1.做输出型参数

Swap2(int& r1, int& r2)
{
	int tmp = r1;
	r1 = r2;
	r2 = tmp;
}
int main()
{
    int c = 0, d = 2;
	Swap2(c, d);

}

2.大对象传参,提高效率

3.做返回值.

int Count()//传值返回
{
	static int n = 0;	
	n++;
	return n;
}//n不是表达式的返回值,是用的n的拷贝

int& Count2()//引用返回  
{
	static int n = 0;//int n =0; 出了作用域n销毁 用静态可以使用
	n++;
	return n;//返回n的别名
}//n的别名是表达式的返回值 

int main()
{

	int ret = Count2();
	cout << ret << endl;
	return 0;
}

总结 :如果出了函数的作用域 返回对象就销毁了.那么一定不能引用返回,一定要用传值返回.

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

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

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