函数
函数的重载
函数重载是指在同一个作用域中可以定义多个函数,这些函数的名称相同但参数列表不同。
通过参数列表的不同,编译器可以区分出调用哪个函数。
#include<iostream>
using namespace std;
void print(int num){
cout<<"打印整数:"<<num<<endl;
}
void print(double num){
cout<<"打印浮点数:"<<num<<endl;
}
int main(){
print(10); //调用print(int)
print(3.14);//调用print(double)
return 0;
}
函数重载的规则如下:
1、函数名称必须相同;
2、参数列表不同(参数个数、顺序、类型);
3、与返回值无关。
好处:函数重载可以提高代码的可读性和复用性。
函数签名(signature)
函数签名由函数的名称和参数列表组成,用于唯一标识一个函数
作用:函数签名用于函数重载和函数重写的类型匹配
内联函数(了解)
内联函数是指在函数声明前加上关键字“inline"的函数
作用:告诉编译器将该函数的定义插入到调用它的地方,而不是通过函数调用的方式执行
inline int add(int a,int b){
return a+b;
}
int main(){
int result = add(3,4);
return 0;
}
优点:减少函数调用的开销
适用场景:函数体较短、频繁调用的情况
C++中的结构体、指针、数组
与c语言中的结构体类似,但可以写函数
//定义结构体
struct Student{
string name;
int age;
double score;
//C++中可以在结构体中直接编写函数
void study(){
cout<<name<<"is studying"<<endl;
}
}
指针、数组和C语言一样
综合案例
1、编写一个学生(student)结构体,有“姓名”、“年龄”、“成绩"三个属性,并有"学习"的函数
2、创建一个长度为3的学生数组;
使用键盘录入的方式,填写学生信息,并添加到数组中3、
4、调用每个学生的“学习”函数,
#include<iostream>
#include<string>
using namespace std;
//定义学生结构体
struct Student {
string name;
int age;
double score;
void study() {
cout << name << "正在学习" << endl;
}
};
int main() {
//创建数组,并创建学生指针
const int SIZE = 3;
Student students[SIZE];//学生数组
Student* ptrStudent;//指向学生结构体的指针
//使用for 循环,录入学生信息
for (int i = 0; i < SIZE; i++) {
ptrStudent = &students[i];//将指针指向当前学生
cout << "第" << i + 1 << "个学生姓名:";
cin >> ptrStudent->name;
cout << "第" << i + 1 << "个学生年龄:";
cin >> ptrStudent->age;
cout << "第" << i + 1 << "个学生成绩:";
cin >> ptrStudent->score;
}
//调用学习函数
for (int i = 0; i < SIZE; i++) {
ptrStudent = & students[i];
ptrStudent->study();
}
return 0;
}