c++基础1

1.什么是C++

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。 1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计

2.c++发展史

C++是一种通用的编程语言,旨在为开发者提供高性能、高效率的工具。下面是C++的主要发展历程:

  1. 1979年:Bjarne Stroustrup在贝尔实验室开始开发C++语言。最初的目的是扩展C语言,以支持对象导向编程。

  2. 1983年:Bjarne Stroustrup正式发布了C++语言的第一个版本。这个版本称为“C with Classes”,是一个C语言的扩展,引入了类、封装、继承、多态等概念。

  3. 1985年:C++语言的第二个版本发布,引入了新的特性,例如虚拟函数、类的静态成员函数等。

  4. 1989年:C++语言的第三个版本发布,这个版本是一个重要的里程碑,引入了模板的概念,使得C++成为一种泛型编程语言。

  5. 1998年:C++98标准发布,这个标准对C++语言进行了全面的规范化和标准化。在这个标准中,引入了异常处理、命名空间等新特性。

  6. 2003年:C++03标准发布,这个标准主要是对C++98标准的一些修正和改进。

  7. 2011年:C++11标准发布,这个标准引入了很多新特性,例如自动类型推断、lambda表达式、智能指针、并发编程等。

  8. 2014年:C++14标准发布,这个标准对C++11标准进行了一些修正和改进。

  9. 2017年:C++17标准发布,这个标准进一步完善了C++11和C++14标准,引入了一些新特性,例如变量模板、折叠表达式等。

  10. 2020年:C++20标准预计发布,这个标准将进一步扩展C++语言的功能,引入了一些新特性,例如概念、协程等。

总的来说,C++语言在不断地发展和演变,逐步成为一种强大而灵活的编程语言,广泛应用于各个领域的软件开发。

3.命名空间 namespace

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

我们来看一串代码:

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
 printf("%d\n", rand);
 return 0;
}
// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

我们知道此代码会出现rand重定义的事情出现,其实这是因为在stdio.h的头文件中有rand函数的定义,然而我们在下面却还写int rand=0,这就是将其重新定义了,为了解决这种问题,c++中添加了命名空间的概念。

namespace bit {
	int  rand = 0;
}

我们通过这个命名空间,将rand放在namespace bit里,相当于一个私人空间,这个样的话该空间的rand和头文件中展开的rand函数就不会重定义。那么我们要如何去用这里面的rand呢?

这里就要用::为作用域解析运算符 如果前面的 没有bit的话,就是去访问全局变量 。

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

4.using

这个是用于展开命名空间的。

当我们用using展开的namespace bit 时发现rand又出现了重定义。我们编译器在找定义时先去1.局部域 2.全局域和展开域的搜索优先级一样。

 我们可以通过局部展开来找到需要的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c23856

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值