C++学习历程(二)——函数

前言

之前在《C++学习历程(一)——基本语法与变量》一文中讲了C++与C语言在语法与变量上的区别,接下来该讲讲函数了。

C++与C的相同

在函数结构上,C++与C语言是基本一致的,比如函数声明函数调用参数形参Parameter实参Argument)、返回值等。

int myFunction1(int x, int y)
{
	cout << x << "\n";
	cout << y << "\n";
	int sum = x + y;
	return sum;
}
void myFunction2(int &x, int &y)
{
	x ^= y;
	y ^= x;
	x ^= y;
	return;
}
int main()
{
	int a, b, sum;
	a = 13;
	b = 25;
	sum = myFunction1(a, b);
	cout << a << " + " << b << " = " << sum << "\n";
	myFunction2(a, b);
	cout << "After swap, a = " << a << ", b = " << b << "\n";
	return 0;
}

输出结果:

13
25
13 + 25 = 38
a = 25, b = 13

C++与C的不同

默认形参(Default Parameter)

默认形参(Default Parameter),即形参已赋予默认值
形参被赋予默认值,调用函数的位置可以不传递实参
如果无实参,则按照形参的默认值进行运算;
如果有实参,则按照实参进行运算。

单个

void myFunction(string name = "Michael")
{
	cout << "Name: " << name << "\n";
	return;
}
int main()
{
	myFunction("James");
	myFunction();
	myFunction("Paul");
	return 0;
}

输出结果:

Name: James
Name: Michael
Name: Paul

多个

如果函数有多个形参,则默认值要么都赋予,要么都不赋予,否则会编译报错。

void myFunction(string name = "Michael"int age = 23)
{
	cout << "Name: " << name << "\n";
	cout << "Age: " << age << "\n";
	return;
}
int main()
{
	myFunction("James", 22);
	myFunction();
	myFunction("Paul", 24);
	return 0;
}

输出结果:

Name: James
Age: 22
Name: Michael
Age: 23
Name: Paul
Age: 24

如果只对一个形参做默认赋值:

void myFunction(string name = "Michael"int age)
{
	cout << "Name: " << name << "\n";
	cout << "Age: " << age << "\n";
	return;
}

则会直接报错default argument missing,如下:

main.cpp:5:46: error: default argument missing for parameter 2 of ‘void myFunction(std::string, int)’
    5 | void myFunction(string name = "Michael", int age)
      |                                          ~~~~^~~
main.cpp:5:24: note: ...following parameter 1 which has a default argument
    5 | void myFunction(string name = "Michael", int age)
      |                 ~~~~~~~^~~~~~~~~~~~~~~~

函数重载

函数重载(Function Overloading),即多个函数可以具有相同的函数名和不同的形参(类型和个数)返回值

int myFunction(int x);
float myFunction(float x);
double myFunction(double x, double y);

例程:

int addition(int x, int y);
float addition(float x, float y);
double addition(double x, double y, double z);

int main()
{
	int a = 3, b = 4;
	float c = 5.4, d = 6.8;
	double e = 3.1415, f = 4.3453, g = 7.6814;
	cout << "intSum:    " << addition(a, b) << endl;
	cout << "floatSum:  " << addition(c, d) << endl;
	cout << "doubleSum: " << addition(e, f, g) << endl;
	return 0;
}
int addition(int x, int y)
{
	return x + y;
}
float addition(float x, float y)
{
	return x + y;
}
double addition(double x, double y, double z)
{
	return x + y + z;
}

输出结果:

intSum:    7
floatSum:  12.2
doubleSum: 15.1682

注意: 只要参数的数量and/or类型不同,多个函数可以具有相同的名称


《C++学习历程(一)——基本语法与变量》
《C++学习历程(二)——函数》
《C++学习历程(三)——类与对象》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值