当前位置: 首页 > news >正文

初识C++以及安装C++学习工具

C++的发展史

C++是由Bjarne Stroustrup在20世纪80年代初期于贝尔实验室开发的一种编程语言。它的设计初衷是作为C语言的一个超集,通过添加面向对象编程的特性来增强C语言。C++支持多种编程范式,包括过程化编程、面向对象编程和泛型编程。

C++的历史可以追溯到1979年,当时Bjarne Stroustrup开始在贝尔实验室工作,他希望改进C语言以更好地支持面向对象的设计。1983年,C++语言的雏形正式被命名为C++,这一年该语言被正式命名并开始使用。C++这个名字是由Rick Mascitti在1983年建议的,它象征着C语言的自然演进,并且“++”在C语言中是递增运算符,表示这是一个C的增强版。

C++经历了多个版本的迭代和改进。

1998年,C++的第一个国际标准(ISO/IEC 14882:1998,简称C++98)发布,这个标准定义了许多现代C++的特性,包括模板、命名空间、异常处理等。

2003年,发布了C++03标准,这是一个次要版本,主要是对C++98标准的技术更正。

2011年,C++11标准发布,这是C++的一次巨大飞跃,引入了智能指针、lambda表达式、并发编程支持等重要新特性。随后,C++14和C++17标准分别在2014年和2017年发布,进一步提升了C++的功能和性能。

C++20是最新的C++标准,于2020年发布,引入了许多新特性,包括概念、协程、范围基于的for循环等。

C++概述:

C++是一种通用的、静态类型的、大小写敏感的、自由格式的编程语言,支持过程化编程、面向对象编程和泛型编程。作为C语言的超集,增加了面向对象的特性。

以下是C++的一些关键特点和概念的概述:

  1. 面向对象编程:C++支持类(class)、对象(object)、继承(inheritance)、封装(encapsulation)和多态(polymorphism)等面向对象的概念。

  2. 泛型编程:通过模板(template)机制,C++允许程序员编写与数据类型无关的代码,这使得代码更加灵活和可重用。

  3. 强类型系统:C++具有强类型系统,这意味着变量的类型在编译时就已经确定,并且类型转换需要明确指定。

  4. 编译型语言:C++是一种编译型语言,源代码在执行前需要被编译成机器码。

  5. 手动内存管理:C++允许程序员通过newdelete操作符手动分配和释放内存,这提供了更高的灵活性,但也增加了内存泄漏和悬挂指针的风险。

  6. 异常处理:C++提供了一套异常处理机制,允许程序在遇到错误时抛出异常,并在适当的地方捕获和处理这些异常。

  7. 标准模板库(STL):C++标准库中包含了一套强大的模板类和函数库,包括容器(如向量、列表、映射等)、迭代器、算法和函数对象。

  8. 自动类型推导:C++11引入了auto关键字,允许编译器自动推导变量的类型,简化了模板的使用。

  9. 智能指针:为了帮助管理动态分配的内存,C++11引入了智能指针,如std::unique_ptrstd::shared_ptr,它们在对象不再使用时自动释放内存。

  10. Lambda表达式:C++11引入了Lambda表达式,允许在需要的地方定义匿名函数。

  11. 并发编程:C++11及后续版本提供了并发编程的支持,包括线程库、原子操作和锁。

  12. 模块化:C++支持模块化编程,允许将代码分割成模块,以提高可维护性和复用性。

 在Windows上安装C++工具

Visual Studio:这是微软提供的一个功能丰富的IDE,它支持C++开发,并提供了调试工具、代码编辑器、版本控制集成和项目管理等功能。Visual Studio具有强大的调试功能,可以帮助开发者逐步执行代码、检查变量和内存状态,以及优化性能。它还支持跨平台开发,允许开发者为不同的操作系统创建应用程序。

下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/

 打开链接后,进入网站选择下载Visual Studio社区版

 1.下载完成后,双击点开

 2.点击继续,等待下载安装一段时间后,进入到下图页面,来进行配置工作负荷,在桌面应用和移动应用处,选择<使用C++的桌面开发> 

 3.选择安装位置,如果不想安装在C盘,可以自主根据电脑磁盘修改

 4.点击页面右下角安装后,进入下图页面 ,等待安装加载完成后,点击启动

 简单使用Visual Studio 2022

1.点击创建新项目

 2.选择C++空项目,之后点击下一步

 3.进入如下图页面,自定义项目名称以及存放位置后,点击创建

 4.在创建后的页面找到解决方案资源管理器,如果没有显示,点击视图找到解决方案资源管理器,点击解决方案资源管理器就会显示出来了

 5.右键点击解决方案资源管理器中的源文件, 点击添加,在添加中选择新建项

 6.打开如下图页面后,选择C++文件(.cpp),自定义名称(不可更改文件后缀名)和位置后,点击添加

 7.创建完成后,就可以写入C++程序了

 8.检验是否可以正常使用:写一个简单的C++代码,之后点击键盘F5

 这样我们的C++工具就已经可以去投入到我们的C++学习任务中了

简单C++程序结构

C++代码示例

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

 代码解读:

  • C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 <iostream>
  • 下一行 using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。
  • 下一行 int main() 是主函数,程序从这里开始执行。
  • 下一行 cout << "HeC++"; 会在屏幕上显示消息 "Hello C++"。
  • 下一行 return 0; 终止 main( )函数,并向调用进程返回值 0

结语:

无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。如果你觉得这篇文章有用,不妨点击收藏,或者留下你的评论分享你的见解和经验,也欢迎你对我博客的内容提出建议和问题。每一次的点赞、评论、分享和关注都是对我的最大支持,也是对我持续分享和创作的动力

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • VirtualBox和VMware的虚拟机ip配置为同一网段不使用wlan的网卡(vulnhub打靶前期准备)
  • Chainlit接入DifyAI知识库接口快速实现自定义用户聊天界面
  • AI自动生成PPT怎么用?5大AI生成PPT技巧教会你
  • 基本数据类型 --- 浮点型
  • 面试中被问到各个测试阶段的具体工作,如何详细描述
  • 代码随想录训练营day42|动态规划part9
  • [C语言]-基础知识点梳理-文件管理
  • 软考高级科目怎么选?
  • 芯片后端之 PT 使用 report_timing 产生报告 之 -nets 选项
  • File的常见成员方法(创建,删除)
  • 【C++ Primer Plus习题】2.2
  • xss靶场 pwnfunction WW3
  • EMC学习之接地与平面
  • 表格解析调研
  • 【Python】函数进阶(下)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • java正则表式的使用
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • React的组件模式
  • SQLServer插入数据
  • swift基础之_对象 实例方法 对象方法。
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 数据科学 第 3 章 11 字符串处理
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ![CDATA[ ]] 是什么东东
  • (function(){})()的分步解析
  • (k8s)Kubernetes本地存储接入
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (力扣题库)跳跃游戏II(c++)
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十)T检验-第一部分
  • (五)Python 垃圾回收机制
  • (原)Matlab的svmtrain和svmclassify
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (轉貼) UML中文FAQ (OO) (UML)
  • ./configure,make,make install的作用
  • .Net Web项目创建比较不错的参考文章
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .Net多线程Threading相关详解
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [] 与 [[]], -gt 与 > 的比较
  • [1204 寻找子串位置] 解题报告
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [2021 蓝帽杯] One Pointer PHP
  • [2023-年度总结]凡是过往,皆为序章
  • [240527] 谷歌 CEO 承认 AI 编造虚假信息问题难解(此文使用 @gemini 命令二次创作)| ICQ 停止运作
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C#]实现GRPC通讯的服务端和客户端实例
  • [C++参考]拷贝构造函数的参数必须是引用类型
  • [Cloud Networking] Layer 2
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态