【C++】C++入门基础讲解(一)

💗个人主页💗

⭐个人专栏------C++学习

💫点击关注🤩一起学习C语言💯💫

导读

经过一段时间的C语言学习,我们以及基本掌握了C语言的知识,今天,我们就开始学习C++,C++是包容C语言的,但是也有自己独特的语法。

由于时间原因,今天就到函数重载,下次我们会学习引用和内联函数。

1. C++与C语言区别

C++和C语言都是高级编程语言,具有相似的语法和结构。

C++相对于C语言在功能和灵活性上有更多的扩展。但是C语言仍然是一种重要的编程语言,在嵌入式系统和低级编程中仍然得到广泛使用。

  1. C++是一种支持面向对象编程的语言,而C语言主要是面向过程的。C++可以使用类、对象、继承等面向对象的概念,而C语言没有这些功能。
  2. C++标准库提供了丰富的功能和类,以简化编程任务。C语言的标准库相对较小,并且没有提供类的支持。
  3. C++支持自动内存管理的特性,如构造函数和析构函数。C语言需要手动管理内存,使用malloc和free等函数。
  4. C++对于其他编程范式(如泛型编程和元编程)的支持更好,可以实现更高级的编程技术。C语言的扩展性相对较弱。

2. C++关键字

3. 命名空间

C++中的命名空间是一种将相关的类、函数、变量等进行分组的机制。它可以防止命名冲突,并提供了更好的代码结构和可读性。

3.1 定义与使用

命名空间的声明使用关键字namespace,后面跟上命名空间的名称,例如:

namespace MyNamespace {

// 命名空间中的代码

}

在命名空间内部,可以声明和定义类、函数、变量等。使用命名空间内的成员时,需要在前面加上命名空间的名称和作用域解析操作符::。

cpp 复制代码
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关键字将命名空间中的成员引入当前作用域。

cpp 复制代码
using namespace zhy;
int main()
{
    printf("%d\n", zhy::zhou);
    printf("%d\n",Add(99, 100));

}

3.2 嵌套定义

在另一个命名空间内定义命名空间,可以使用命名空间的嵌套语法:

cpp 复制代码
namespace www
{
    int zz = 99;
    namespace hh
    {
        int y = 999;
    }
}

4. C++的输入和输出

在C++中,可以使用cin进行输入操作,使用cout进行输出操作。

cpp 复制代码
#include<iostream>
//std 所有C++库命名空间
using namespace std;
int main() {
	int num;
	cout << "请输入一个整数:";
	cin >> num;

	cout << "您输入的整数是:" << num << endl;

	return 0;
}
  1. 使用cout进行输出时,可以使用<<运算符将要输出的内容连接起来,多个内容之间可以使用<<进行连接。最后,使用cin进行输入时,使用>>运算符将输入的内容赋给变量num。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。

5. 缺省参数

C++中的缺省函数是指在函数声明或定义时为参数提供默认值的函数。当调用该函数时,如果没有为相应的参数提供具体的值,则使用默认值。

缺省函数可以在函数声明或定义时提供默认值,也可以在函数原型中提供默认值。

cpp 复制代码
void Print(int a = 0)
{
	cout << a << endl;
}
int main()
{
	Print();			// 没有传参时,使用参数的默认值
	Print(10);		// 传参时,使用指定的实参
	return 0;
}

5.1 全缺省函数

全缺省函数是指所有参数都提供了默认值的函数。这意味着调用该函数时可以不传递任何参数。

cpp 复制代码
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 半缺省函数

cpp 复制代码
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++函数重载是指在同一个作用域内定义多个同名函数,但是它们具有不同的参数列表。通过函数重载,可以根据不同的参数类型和个数来调用不同的函数,从而实现更灵活和多样化的函数调用方式。

cpp 复制代码
// 函数重载示例
// 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;
}
相关推荐
晓纪同学25 分钟前
QT-简单视觉框架代码
开发语言·qt
威桑25 分钟前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服28 分钟前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生34 分钟前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生37 分钟前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans39 分钟前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手1 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Chinese Red Guest1 小时前
python
开发语言·python·pygame
一棵星1 小时前
Java模拟Mqtt客户端连接Mqtt Broker
java·开发语言
别NULL2 小时前
机试题——疯长的草
数据结构·c++·算法