💗个人主页💗
⭐个人专栏——C++学习⭐
💫点击关注🤩一起学习C语言💯💫
导读
经过一段时间的C语言学习,我们以及基本掌握了C语言的知识,今天,我们就开始学习C++,C++是包容C语言的,但是也有自己独特的语法。
由于时间原因,今天就到函数重载,下次我们会学习引用和内联函数。
1. C++与C语言区别
C++和C语言都是高级编程语言,具有相似的语法和结构。
C++相对于C语言在功能和灵活性上有更多的扩展。但是C语言仍然是一种重要的编程语言,在嵌入式系统和低级编程中仍然得到广泛使用。
- C++是一种支持面向对象编程的语言,而C语言主要是面向过程的。C++可以使用类、对象、继承等面向对象的概念,而C语言没有这些功能。
- C++标准库提供了丰富的功能和类,以简化编程任务。C语言的标准库相对较小,并且没有提供类的支持。
- C++支持自动内存管理的特性,如构造函数和析构函数。C语言需要手动管理内存,使用malloc和free等函数。
- C++对于其他编程范式(如泛型编程和元编程)的支持更好,可以实现更高级的编程技术。C语言的扩展性相对较弱。
2. C++关键字
3. 命名空间
C++中的命名空间是一种将相关的类、函数、变量等进行分组的机制。它可以防止命名冲突,并提供了更好的代码结构和可读性。
3.1 定义与使用
命名空间的声明使用关键字namespace,后面跟上命名空间的名称,例如:
namespace MyNamespace {
// 命名空间中的代码
}
在命名空间内部,可以声明和定义类、函数、变量等。使用命名空间内的成员时,需要在前面加上命名空间的名称和作用域解析操作符::。
namespace zhy
{// 命名空间中可以定义变量/函数/类型int zhou = 10;int Add(int x, int y){return x + y;}struct Node{struct Node* next;int data;};
}
int main()
{printf("%d\n", zhy::zhou);
}
如果不想每次都写命名空间的名称和作用域解析操作符,可以使用using关键字将命名空间中的成员引入当前作用域。
using namespace zhy;
int main()
{printf("%d\n", zhy::zhou);printf("%d\n",Add(99, 100));}
3.2 嵌套定义
在另一个命名空间内定义命名空间,可以使用命名空间的嵌套语法:
namespace www
{int zz = 99;namespace hh{int y = 999;}
}
4. C++的输入和输出
在C++中,可以使用cin进行输入操作,使用cout进行输出操作。
#include<iostream>
//std 所有C++库命名空间
using namespace std;
int main() {int num;cout << "请输入一个整数:";cin >> num;cout << "您输入的整数是:" << num << endl;return 0;
}
- 使用cout进行输出时,可以使用<<运算符将要输出的内容连接起来,多个内容之间可以使用<<进行连接。最后,使用cin进行输入时,使用>>运算符将输入的内容赋给变量num。
- cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
- 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。
5. 缺省参数
C++中的缺省函数是指在函数声明或定义时为参数提供默认值的函数。当调用该函数时,如果没有为相应的参数提供具体的值,则使用默认值。
缺省函数可以在函数声明或定义时提供默认值,也可以在函数原型中提供默认值。
void Print(int a = 0)
{cout << a << endl;
}
int main()
{Print(); // 没有传参时,使用参数的默认值Print(10); // 传参时,使用指定的实参return 0;
}
5.1 全缺省函数
全缺省函数是指所有参数都提供了默认值的函数。这意味着调用该函数时可以不传递任何参数。
void printMessage(string message = "Hello, World!", int count = 1, char separator = '-') {for (int i = 0; i < count; i++) {cout << message << separator;}cout << endl;
}int main() {printMessage(); // 使用所有默认参数printMessage("Hi there!"); // 使用默认的 count 和 separator 参数printMessage("Goodbye", 3); // 使用默认的 separator 参数printMessage("Custom", 2, '+'); // 使用所有自定义参数return 0;
}
5.2 半缺省函数
void printNumbers(int a, int b = 0, int c = 0) {cout << "Numbers: " << a << " " << b << " " << c << endl;
}int main() {printNumbers(1); // 使用默认的 b 和 c 参数printNumbers(1, 2); // 使用默认的 c 参数printNumbers(1, 2, 3); // 使用所有自定义参数return 0;
}
6. 函数重载
C++函数重载是指在同一个作用域内定义多个同名函数,但是它们具有不同的参数列表。通过函数重载,可以根据不同的参数类型和个数来调用不同的函数,从而实现更灵活和多样化的函数调用方式。
// 函数重载示例
// 1、参数类型不同
int sum(int a, int b) {return a + b;
}double sum(double a, double b) {return a + b;
}
// 2、参数个数不同
int sum(int a, int b, int c) {return a + b + c;
}
// 3、参数类型顺序不同
void sum(int a, double b)
{cout << "Sum: " << a + b << endl;
}
int main() {int result1 = sum(5, 10);cout << "Sum of two integers: " << result1 << endl;double result2 = sum(3.14, 2.71);cout << "Sum of two doubles: " << result2 << endl;int result3 = sum(1, 2, 3);cout << "Sum of three integers: " << result3 << endl;sum(3, 3.14);return 0;
}