前言
之前在《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++学习历程(三)——类与对象》
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。