【c++初阶】C++入门(上)

请添加图片描述

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌟🌟 追风赶月莫停留 🌟🌟
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
🌟🌟 平芜尽处是春山🌟🌟
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅

🍋C++入门

  • 🍑C++关键字
  • 🍑C++命名空间
    • 🍍命名空间的由来
    • 🍍命名空间的用法
  • 🍑C++输入和输出
    • 🍍输入
    • 🍍输出
  • 🍑C++缺省参数
    • 🍍缺省参数的定义
    • 🍍缺省参数分类
    • 🍍缺省参数的用法
  • 🍑C++重载
    • 🍍重载的定义
    • 🍍重载的规则
    • 🍍重载的分类
    • 🍍C++支持重载的原因

🍑C++关键字

1、auto – 用于声明自动变量,可以由编译器自动推断类型。

2、break – 用于跳出当前循环或switch语句。

3、case – 用于switch语句的一个分支。

4、char – 用于声明字符型变量或函数。

5、class – 用于定义类。

6、const – 用于声明只读变量,即该变量的值不可更改。

7、constexpr – 用于定义编译时常量。

8、continue – 用于跳过循环的当前迭代。

9、default – 用于switch语句中的默认分支。

10、do – 用于do-while循环的循环体。

11、double – 用于声明双精度浮点型变量或函数。

12、else – 用于条件语句,如果条件为假,则执行else块中的代码。

13、enum – 用于声明枚举类型。

14、extern – 用于声明在别处定义的变量或函数。

15、float – 用于声明单精度浮点型变量或函数。

16、for – 用于for循环。

17、goto – 用于无条件跳转到程序中的特定位置。

18、if – 用于条件语句,根据条件的值执行不同的代码块。

19、int – 用于声明整型变量或函数。

20、long – 用于声明长整型变量或函数。

21、namespace – 用于定义命名空间,用于组织和访问相关的类、函数和变量。

22、new – 用于动态分配内存。

23、operator – 用于重载运算符。

24、private – 用于声明类的私有成员。

25、protected – 用于声明类的保护成员。

26、public – 用于声明类的公开成员。

27、register – 建议将变量存储在寄存器中,提高效率。

28、return – 用于从函数返回值。

29、short – 用于声明短整型变量或函数。

30、signed – 用于声明有符号类型变量或函数。

31、sizeof – 用于计算数据类型或对象的大小。

32、static – 用于声明静态变量,分配内存在静态存储区。

33、struct – 用于定义结构体。

34、switch – 用于条件分支语句。

35、template – 用于定义函数或类的模板。

36、this – 指向当前对象的常量指针。

37、throw – 用于抛出异常。

38、true – 布尔类型的真值。

39、try – 用于异常处理,尝试捕获异常。

40、typedef – 用于给数据类型定义别名。

41、typeid – 用于获取表达式的类型信息。

42、typename – 用于模板编程中标示模板参数是一个类型名称。

43、union – 用于定义共用
。。。。。。
目前C++常用的关键字大部分都列出来了,大家不需要一个一个的背,在以后写代码过程中,会一直用,用久了自然就熟悉了。

🍑C++命名空间

🍍命名空间的由来

C++的命名空间(namespace)是C++语言引入的一个特性,其主要目的是为了解决命名冲突和提供代码组织上的便利性。

在C++早期,随着代码库的不断扩大和功能的不断增加,程序员们经常遇到一个问题:不同库中的函数或类可能使用相同的名称。这导致在链接或运行时出现冲突,因为编译器或链接器无法区分哪个名称指的是哪个实体。

为了解决这个问题,C++引入了命名空间的概念。==命名空间是一个封装的命名环境,它可以将相关的类、函数和对象组织在一起,并给它们一个唯一的标识符。==这样,即使不同的库中有相同名称的实体,只要它们位于不同的命名空间中,就可以避免命名冲突。

命名空间的由来可以追溯到编程语言和软件开发的演进过程。随着软件规模的扩大和复杂性的增加,代码组织和管理的需求变得越来越重要。命名空间作为一种代码组织工具,使得代码更加清晰、易于理解和维护。

🍍命名空间的用法


首先C++代码编写需要写这个头文件,也就是上图所示。


上图中就是我们学习的C++第一个命名空间,也是最重要的一个命名空间。std是一个C++的重要的库的名称。

using是C++中的关键字主要作用是简化代码,提高代码的可读和维护性,通过声明命名空间和使用别名,我们可以使代码更加清晰,简洁,减少冗余和错误。

namespace也是C++中的关键字用于定义命名空间,用于组织和访问相关的类、函数和变量

我们自己可以定义一个命名空间:


这个名字叫Computer的空间包含了加法和交换函数。

命名空间的名称可以自己随意定,符合变量的定义规则就行。

接下来我们看看用法,平常我们在c语言中直接调用这个函数就可以用了,而现在有了这个命名空间:

Add哪里报错了:

执行程序时,系统没有找到Add()这个函数。

来看命名空间是怎么用的:

从图中可以看出,是在Add前面加了两个冒号(::)再加上命名空间的名称(Computer)。

C++中,:: 是一个作用域解析运算符,它用于指定一个特定的标识符(例如变量、函数、类型等)属于哪个命名空间或类。

在这里::是指定命名空间中的元素,元素包括命名空间里的函数和各种变量。

也就是说当你想要访问命名空间中的变量和函数时,都需要这么去写。

而在开头中 :

在这里我们可以利用Computer给大家试试这个:


在这幅图中大家可以明显看到,原本我们是要利用::,才能使用Add函数,而现在,当有了
using namespace Computer,现在就可以使用Add函数了。

现在大家也应该能猜到了“using namespace Compputer;”这串代码的意思了吧。

这串代码就是打开Computer这个命名空间的意思。通俗点的意思,就是Computer是一片封闭的空间,得要有钥匙,你才能进到这个空间,而到using namespace Computer就是把这片封闭的空间公开了,任何人都可以进去。大概就是这个意思,大家可以这样简单的理解。

而“using namespace std;”就是打开std这片空间。std是C++重要的一个库,只要编写C++代码就要写上这片代码。

当然std是一个重要的库,也包含了很多函数和关键字。当你使用”using namespace std”打开这个库,这个时候你自己定义的函数或关键字不能与库里面相同,否则会报错,当然供我们基础的学习碰到的概率可以微乎不计,以后做大项目时大家多注意点就行了。

🍑C++输入和输出

🍍输入

编写C++程序是必须要写#include头文件名的还有展开std这个库,图中cin和cout也在std库中。

C++的输入cin和C语言中输入scanf还是有很大区别的,也变得更方便了。

🍍输出


大家应该可以看出,cout是C++中的输出对象和C语言中printf还是有了很大的提升,变得更方便了。其中在这里endl其实是‘\n’的作用,就是断行的意思。

总结:在C++中,cout 和 cin 是两个非常重要的对象,它们分别属于 std 命名空间中的 ostream 和 istream 类。这两个对象主要用于控制台的输入输出操作,并且可以自动识别变量的类型。

🍑C++缺省参数

🍍缺省参数的定义

在C++中,缺省参数是指在函数声明或定义时给函数的某些参数指定默认值。当调用这个函数时,如果调用者没有提供对应参数的实参,编译器将自动使用这些默认值。这有助于简化函数调用,并为函数提供更大的灵活性。

缺省参数可以在函数声明时指定,也可以在函数定义时指定,但通常推荐在函数声明时指定,以保持接口的一致性。

注意:需要注意的是,一旦某个参数有了缺省值,它后面的所有参数都必须有缺省值。这是因为在函数调用时,编译器从左到右匹配参数和实参,如果中间的某个参数使用了缺省值,那么它后面的参数也必须能够匹配上,否则会导致编译错误。

🍍缺省参数分类

上面就是正确的缺省函数的写法。

给大家看一下错误的缺省函数的写法:

在C++中缺省值只能从左边往右看,而不能从右往左看。

缺省值的规则:一旦某个参数有了缺省值,它后面的所有参数都必须有缺省值。这是因为在函数调用时,编译器从左到右匹配参数和实参,如果中间的某个参数使用了缺省值,那么它后面的参数也必须能够匹配上,否则会导致编译错误。

🍍缺省参数的用法


第一个函数没有实参,传参时使用参数的默认值

第二个函数有实参,传参时就使用指定的实参

大家应该可以从图中看明白。

接下来就是半缺省值:


如图,中间还是不能空着,不符合缺省函数书写的规则。

🍑C++重载

🍍重载的定义

在C++中,函数重载是指使用相同的函数名定义多个函数,但它们的参数列表(参数的类型、个数或顺序)必须不同。这样,编译器可以根据提供的参数来区分应该调用哪个函数。函数重载允许我们以更自然和直观的方式使用函数名,同时减少了因函数命名不同而带来的混淆。

🍍重载的规则

下面是函数重载的一些基本规则:

函数名相同:重载的函数必须具有相同的名称。

参数列表不同:重载的函数必须至少有一个参数的类型、个数或顺序不同。

返回类型不同不是重载的依据:仅仅返回类型不同不足以区分两个函数重载。

与函数模板的区别:函数模板允许对不同类型的参数进行相同的操作,而函数重载则是针对具有不同参 数列表的同名函数。

🍍重载的分类

#include <iostream>
using namespace std;

// 函数重载示例

// 第一个重载版本:接受一个字符串参数并输出它
void add(char message) 
{
    cout << message << endl;
}

// 第二个重载版本:接受两个整数参数
int add(int a, int b) 
{
    return a + b;
}

// 第三个重载版本:接受两个浮点数参数
double add(double a, double b) 
{
    return a + b;
}

// 第四个重载版本:接受一个整数和一个浮点数参数
double add(int a, double b) 
{
    return a + b;
}


int main() 
{
    add('a'); // 调用第一个重载版本
    int cur1 = add(2, 3); // 调用第二个重载版本
    double cur2 = add(2.5, 3.5); // 调用第三个重载版本
    double cur3 = add(2, 3.5); // 调用第四个重载版本
    
    cout << cur1 << endl;
    cout << cur2 << endl;
    cout << cur3 << endl;

    return 0;
}

这里介绍了4种重载的情况,并且成功的运行了。当然重载的情况不仅仅只有这4种,根据实际情况而定。

只是想让大家明白函数重载是C++中的一个重要概念,与C语言有很大的区别,C语言中是不支持函数重载的,C++中却支持。

🍍C++支持重载的原因

主要有4个原因:
提高代码可读性:通过函数重载,我们可以使用相同的函数名来表示一系列相关但参数不同的操作。这有助于减少因不同操作而使用不同函数名所带来的命名混乱,使得代码更易于理解和维护。

增加语言表现力:函数重载允许程序员以更自然和直观的方式编写代码。例如,我们可以使用add函数来处理整数相加和浮点数相加,而无需为每种类型编写一个具有不同名称的函数。这使得代码更易于编写和阅读。

简化函数调用:当函数具有多个重载版本时,程序员可以根据需要传递不同类型的参数来调用相应的函数。这减少了编写代码时需要考虑的复杂性,使得函数调用更加简洁和直观。

类型安全:函数重载通过编译器在编译时检查参数类型来确保类型安全。如果传递给函数的参数类型与任何重载版本都不匹配,编译器将报错,从而防止了潜在的类型错误。

支持泛型编程思想:函数重载可以被视为泛型编程的一种简单形式。虽然它不如模板那样灵活和强大,但在某些情况下,函数重载提供了一种简洁的方式来处理多种数据类型。

总之,C++支持函数重载是为了提高代码的可读性、增强语言表现力、简化函数调用、确保类型安全以及支持泛型编程思想。这使得C++成为一种强大而灵活的编程语言,能够应对各种复杂的编程任务。

请添加图片描述

请添加图片描述

版权声明:本文为博主作者:悦心无谓原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_74967884/article/details/136784108

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2024年4月16日
下一篇 2024年4月16日

相关推荐