从C到C++过渡篇

一,C++三大主体

1.C++语法

2.C++库:STL

3.高阶数据结构(如果在此没学初阶数据结构的可以先去学)

二,认识C++

目录:什么是C++->C++发展史->C++重要性->如何学习C++

一.什么是C++

C++ 是一种高级编程语言。

C++ 是在 C 语言的基础上发展而来的,它既保留了 C 语言的高效、灵活和接近底层硬件的特点,又增加了面向对象编程的特性,如类、对象、继承、多态等。

以下是 C++ 的一些重要特点和应用场景:

  1. 高效性:C++ 允许开发者直接操作内存,对于性能要求极高的系统,如操作系统内核、游戏引擎、实时控制系统等,C++ 能够提供出色的性能。

例如,许多大型游戏,如《使命召唤》《刺客信条》等,其核心部分就是使用 C++ 编写的,以确保游戏在复杂的场景和大量的交互中仍能保持流畅的运行。

2.面向对象编程:通过类和对象的概念,C++ 使得代码更具组织性、可维护性和可扩展性。

比如,在开发一个图形库时,可以创建一个 Shape 类,然后派生出 Circle(圆形)、Rectangle(矩形)等子类,实现代码的复用和功能的扩展。

3.泛型编程:通过模板机制,C++ 支持编写通用的代码,可用于处理不同类型的数据。

像标准模板库(STL)中的容器(如 vectorlist)和算法(如 sortfind)就是泛型编程的典型应用。

4.广泛的应用领域:C++ 几乎适用于所有需要高性能和复杂逻辑的领域,包括软件开发、游戏开发、嵌入式系统、金融交易系统等。

二.C++发展史

C++的发展历史可以追溯到20世纪80年代,以下是其主要的发展阶段和重要事件:

  1. 起源(1979年):比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)开始着手“C with classes”的研发工作,旨在为C语言增强一些类似Simula的特点,以解决大型软件开发的问题。他选择C语言的基础是其适用于各种用途、快速且可移植。同时也从其他语言如Algol68、Ada、CLU以及ML中获取灵感。
  2. 1983年:“C with classes”语言更名为C++。此时许多重要特性被加入,如虚函数、函数重载、引用机制(符号为&)、const关键字以及双斜线的单行注释(从BCPL语言引入)。Rick Mascitti建议将“C with class”更名为“C++”,其中“++”运算符表示对变量进行递增操作,也象征着C++是C语言的增强版。
  3. 1985年:斯特劳斯特卢普的C++参考手册《The C++ Programming Language》出版,同年C++的商业版本问世。由于当时C++没有正式的语言规范,这本书成为了业界的重要参考。
  4. 1989年:C++再次版本更新,引入了多重继承、保护成员以及静态成员等语言特性。
  5. 1990年:《Annotated C++ Reference Manual》发布,Borland公司的商业版Turbo C++编译器也随之问世,附带的大量函数库对C++开发产生了深远影响。
  6. 1998年:C++标准委员会发布了C++语言的第一个国际标准—ISO/IEC 14882:1998,即C++98。标准模板库(STL)也被纳入该版标准中。
  7. 2003年:针对C++98版本中存在的问题进行修订后,发布了C++03标准。
  8. 2011年:新的C++标准(C++11)面世。Boost库对该版本影响很大,一些新模块直接衍生于Boost中的相应模块。新的语言特性包括正则表达式、完备的随机数生成函数库、新的时间相关函数、原子操作支持、标准线程库、新的for语法、auto关键字、新的容器类、更好的union支持、数组初始化列表的支持以及变参模板的支持等。
  9. 2014年:C++14标准获得一致通过,标准是“ISO/IEC 14882:2014 Information Technology -- Programming Languages -- C++”。它对C++11进行了一些改进和补充,增强了泛型编程和元编程的能力,例如变长模板、泛型 lambda 表达式、constexpr 函数等。
  10. 2017年:ISO C++委员会正式发布了C++17标准,官方名称为 ISO/IEC 14882:2017,又称C++1z。它基于C++11,旨在使C++成为一个不那么复杂的编程语言,以简化日常使用,包括常量表达式函数、if constexpr、折叠表达式、执行上下文和文件系统库等新特性

三.C++重要性

在性能关键型应用中的核心地位
C++允许对硬件进行底层控制和优化,这在性能至关重要的领域如游戏开发、实时系统和高性能计算中不可或缺。例如,大型 3A 游戏如《巫师 3》,为了实现逼真的画面效果和流畅的游戏体验,其核心引擎部分通常使用 C++编写,以充分利用硬件资源,达到高帧率和低延迟。

系统编程的首选语言
操作系统内核、驱动程序和设备控制等系统级编程任务中,C++是常见的选择。像 Windows 和 Linux 内核的部分关键模块就是用 C++实现的,确保系统的稳定性和高效性。

金融和交易领域的可靠性
在高频交易和金融计算中,每一点性能提升都至关重要。C++的高效性和精确控制使得金融机构能够快速处理大量交易数据,降低风险。

跨平台开发的能力
通过适当的编码和编译设置,C++编写的程序可以在多种不同的操作系统和硬件架构上运行,为开发者提供了广泛的部署灵活性。

标题四

培养良好的编程习惯和思维
C++的复杂性要求开发者具备严谨的逻辑思维、内存管理能力和对程序性能的敏感度。掌握 C++有助于提升开发者在其他编程语言中的编程水平。

长期的技术积累和广泛的资源
由于其悠久的历史,C++拥有丰富的库、框架和成熟的开发工具,使得开发复杂项目更加高效。

四.如何学习C++

1. 基础知识学习

  • 选择一本权威的 C++入门书籍,如《C++ Primer》《Effective C++》等,系统地学习语法、数据类型、控制结构等基础知识。
  • 在线课程也是不错的选择,例如 Coursera、EdX 等平台上的相关课程。

2. 实践练习

  • 多动手编写代码,通过实际项目练习来巩固所学知识。
  • 可以从简单的控制台应用程序开始,如实现一个计算器、学生成绩管理系统等。

3. 深入理解面向对象编程(OOP)

  • 掌握类、对象、继承、多态等 OOP 概念,并通过实际案例进行练习。
  • 例如,设计一个动物类的层次结构,包括基类 Animal 和派生类如 DogCat 等。

4. 学习标准模板库(STL)

  • 熟悉常用的容器(如 vectorlistmap 等)和算法(如排序、查找等),提高编程效率。
  • 尝试使用 STL 来解决一些数据处理问题,如对一组数字进行排序和筛选。

5. 阅读优秀的代码

  • 在 GitHub 等代码托管平台上查找高质量的 C++项目,阅读并理解其代码结构和设计思路。
  • 可以参考一些开源的 C++库,如 Boost 库。

6. 参与社区和交流

  • 加入 C++相关的论坛、社区,与其他开发者交流经验、解决问题。
  • 例如,在 Stack Overflow 上提问和回答与 C++相关的问题。

7. 项目实践

  • 参与实际的项目开发,将所学知识应用到实际场景中。
  • 可以参与开源项目或者自己开发一个小型的应用程序,如一个简单的图形界面程序。

8. 不断复习和总结

  • 定期回顾所学内容,总结常见的错误和解决方案。
  • 建立自己的代码笔记,方便随时查阅和复习。

三.关于namespace的介绍

1.namespace可开一个命名域

如:namespace bit

{

int rand=0;

struct Node

{

int val;

struct Node*next;
}

void Add(int left,int right)

{

return left+right;

}

//可以包含变量/函数/结构体
}

2.namespace命名域的调用

方法一:

①bit:: + 调用变量 如:printf("%d",bit::rand);

②struct bit::Node photo;

③printf("%d",bit::Add(1,2));

方法二:开放命名域

using namespace bit;(注意:可以单独开放某个变量,如:using bit::rand;

✳:1:不同域可定义相同变量,同域不可

2.不同文件可定义同一个命名空间,他们之间会合并

3.命名空间是域

四.头文件iostream和bits/stdc++.h

1.#include<iostream>是包含在std命名域内的,运用其内的cout,cin和endl是要调用std命名域 如:std::cout<<...<<...endl;

2#include<bits/stdc++.h>是总头文件,包含了所有头文件在内

五.cout,endl和cin的可能及其运用

①.count类似于printf,他可以自动识别变量类型 如:

int i=0;

double j=1.11;

std::count<<i<< " "<<j<<endl;也能运行起来,与printf("%d %d\n",i,j);等价

②.cin类似于scanf,也可以自动识别变量类型

用法:std::cin>>i>>j;与scanf("%d%d",&i,&j);等价

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值