C++第一篇

编程入门 行业动态 更新时间:2024-10-26 22:20:10

C++<a href=https://www.elefans.com/category/jswz/34/1763908.html style=第一篇"/>

C++第一篇


📙 作者简介 :RO-BERRY
📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识
📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持



目录

    • 🎄 前言
  • 1. C++关键字(C++98)
  • 2. 命名空间

🎄 前言

C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C++学习有一定的帮助,本章节主要目标:

  1. 补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用
    域方面、IO方面、函数方面、指针方面、宏方面等。
  2. 为后续类和对象学习打基础

1. C++关键字(C++98)

C++总计63个关键字,C语言32个关键字
ps:下面我们只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再细讲。

2. 命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的


先来写一段简单C++代码
进入一个语言世界肯定是从hello world开始啦
作为对比先来C语言版本的:

#include<stdio.h>
int main()
{printf("hello world");return 0;
}

再来看C++版本


#include<iostream>
using namespace std;
int main()
{cout<<"hello world"<<endl;return 0;
}

我们都知道在C语言文件中源文件后缀都是.c
但是在.cpp文件里,这两个代码都可以运行
输出结果都是
hello world
可是我们的头文件以及输出方式却完全不一样
C++首先兼容C语言的知识,C语言的知识在C++都可以用
C++还有面向对象,泛型以及对C语言不足的弥补

接下来我们正式介绍C++语言的基础
就是这个头文件以及下面using namespace std;这都是什么,还有这输出方式怎么看不懂


我们先来看一个例子:

#include<stdio.h>
int rand = 0;
int main()
{printf("hello world");printf("%d",rand);return 0;
}

这个时候运行非常成功

我们将代码改一下
你会发现只是添加了一个头文件

#include<stdio.h>
#include<stdlib.h>
int rand = 0;
int main()
{printf("hello world");printf("%d",rand);return 0;
}

这个时候运行会出错
看报错我们发现出现的是命名冲突
rand重定义了
命名冲突主要分为

  1. 我们写的跟库冲突
  2. 我们写的互相之间冲突

这种命名冲突在C语言中的经典的问题,项目越大,我们会出现命名冲突就会越多
c++中就出现了命名空间 —> namespace


接下来我们来看namespace的用法:
定义一个命名空间

#include<stdio.h>
#include<stdlib.h>namespace  bay
{int rand = 0;
}int main()
{printf("hello world");printf("%d",rand);return 0;
}

我们会发现运行成功了
命名空间就相当于一堵墙,将rand围起来了,我们就会访问不到,系统会去找那个全局rand,在这里全局的rand是一个函数名,系统就会出现提醒,提示不要这样使用

那我们如何访问我们命名空间里面的rand呢?

#include<stdio.h>
#include<stdlib.h>namespace  bay
{int rand = 0;
}int main()
{printf("hello world");printf("%d",bay::rand);return 0;
}

我们在rand前加入我们的名字bay::
名称后面的冒号叫做(::)域作用限定符
这样我们就可以随便进行重复命名变量,还可以访问我们需要的变量
以后如果想避免冲突就可以采用这种方式了
如果在自己定义的命名空间出现命名冲突怎么办?
我们能想到的开发者也能想到,所以我们在命名空间里可以嵌套命名空间,可以无限套娃
提示:我们在同一个文件定义命名空间以及多个文件中国定义命名空间,如果名称相同,编译器会认为是一个命名空间,不会发生冲突,反而会将他们合并哦

那我们想使用自己定义的命名空间,再使用其中的内容是不想带那个前缀应该怎么办?

我们在头文件下面加上 using namespace 【命名空间名称】;
这样我们就可以随便使用,如果使用和里面的空间相同名称的变量,我们就会默认使用这个命名空间定义的变量,不需要加前缀。

现在我们回到一开始,using namespace std;
这句话的意思就是我们的代码就是在使用std命名空间里面的内容
所以我们使用其中的东西就不用再带上std::这个前缀
std是c++官方库定义的命名空间

#include<iostream>    --->>头文件  输入输出流int main()
{std::cout<<"hello world";     -->>C语言的移位运算符,C++的流插入运算符                     --->>没有带命名空间使用  要加前缀int a=10;double b=11.11;std::cout<<a;std::cout<<b;                     -->>C++能自动识别输出的变量类型std::cout<<a<<b<<"\n";std::cout<<a<<b<<std::endl;    -->>C++可以连续输出,endl相当于C语言里面的\n,在这里等同于换行,endl是C++里面自定义的换行符return 0;
}

我们每次指定命名空间很不方便,但是将命名空间全部展开又有冲突的风险
我们采用指定展开可以解决问题

using std::cout;
using std::endl;

这两个变量就被展开了,在内容里就不用加前缀了
我们就可以指定展开想要的变量或者函数都可以,这样我们的程序就可以变的非常的方便了

我们C语言里面的scanf
在C++里面就是std::cin,又叫做流提取

更多推荐

C++第一篇

本文发布于:2023-12-03 20:44:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1657451.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第一篇

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!