#1 C++概述--NOTE

目录

  • 1. C++概述
    • 1.1. C++ 简介
      • 1.1.1. C++简介
      • 1.1.2. C与C++
      • 1.1.3. C++文件结构
    • 1.2. C++ 代码书写规范
      • 1.2.1. 代码规范 笔记集锦
      • 1.2.2. 具体项
    • 1.3. 开源项目 学习
      • 1.3.1. 初学开源项目
        • 1.3.1.1. C 开源项目
        • 1.3.1.2. C++ 开源项目
    • 1.4. 参考资料
      • 1.4.1. 参考教程
      • 1.4.2. 参考文档
      • 1.4.3. 参考视频
      • 1.4.4. C++学习思想

1. C++概述

1.1. C++ 简介

1.1.1. C++简介

  • C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
  • C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。
  • C++ 是由 Bjarne Stroustrup 于 1979年在新泽西州美利山贝尔实验室开始设计开发的。
    C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。
  • C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

注意:

  1. 使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

1.1.2. C与C++

  1. 标准类库主要包含:(C语言是函数库,C++ 是类库

  2. C++语言比C语言在一些代码书写上更加方便和简介,例如:

    1. C++函数内变量的定义可以在语句之,而C语言则变量必须定义在函数内所有语句的上方;
    2. C语言定义结构体对象(指针)时必须带关键字,而C++不用带关键字.
  3. 新增变量

    1. bool型变量:1个字节变量(和char一样大小);
      缺省赋值为true(1)或者false(0)
    2. 引用型变量
      让新申请的变量挂在原有同类型变量的内存地址上。
      1. 引用型变量必须初始化,引用变量必须挂在一个现有的同类型变量上;
      2. 引用变量的地址与来源变量的地址一定是在同一个内存地址上(相同);
      3. 引用变量与来源变量任何一个数值变化则另一个一定变;
      4. 引用型变量做参数,经常是用来代替来源变量赋值或者取值(替身);
          引用型变量的原理实际上就是指针变量,被障眼法看成是两个替身变量;
          引用的优点是书写更加流畅,使代码的逻辑更加清晰!!
      
  4. 命名空间:namespace

    1. 当工程代码量庞大时,由大量程序员编写的代码出现了重名函数,重名全局变量
    2. 使用using namespace std; 语句在每处调用空间内的函数不用加域名控制;
        例如:std::cout << aa;
    3. 定义域(::):以后会在**类成员函数**中常用。
    
  5. C++输入输出:

    //推荐使用:
    #include 
    using namespace std;
    // 不推荐使用
    #include 
    cout 和cin代替printf和scanf功能更强,自动识别输入输出的类型。
    (不需要指定 %d 和 %s 等等)
    
  6. C++支持重载函数,C语言不可以有名字相同的函数;
    重载函数:函数名字相同但是参数列表不同(类型和个数不完全相同),不能只是返回类型不同。
    递归函数:C语言和C++都支持。

  7. 申请堆空间:
    new和delete代替malloc和free,是书写更加流畅,尤其申请堆内数组更直观。

    例如:
    1.申请1个普通变量int *p = new int; delete p;
    2. 申请数组 int *p = new int[10]; delete []p;
    3. 申请结构体对象:SData * p = new SData; delete p;
    4. 申请结构体数组:SData * p = new SData[20]; delete []p;
    5. 申请指针数组:SData* p[100] = { NULL }; delete[]p;
    6. 
    **注意:**
        new 的错误写法:int* p1 = new int(5);
    
  8. C++由结构体struct升级为类class

    • 结构体或者类内不但支持成员变量,还支持成员函数,是一个更加严重的障眼法;
    • 任何一个类的成员函数内部都隐藏形式参数一个变量叫this;
  9. 内联扩展
    是用来消除函数调用时的时间和空间开销。它通常用于频繁执行的函数。

    一个小内存空间的函数非常受益。如果程序员没有指定内联函数,编译器可以决定哪些函数内联。
    内连函数**inline**
    代替:C语言的宏定义函数,实际也是C++的障眼法之一。
    编译时仍然按宏定义函数一样处理的。
    
  10. 面向过程与面向对象
    过程:
    对象:万物皆对象。解决问题时,传递对象。面向对象是一种管理源代码的方式.

1.1.3. C++文件结构

  1. 头文件 .h
    头文件主要包含 版权、版权的声明、宏定义和 函数、类信息声明。
    1. 关于 宏定义
      在头文件开头进行宏定义,防止头文件的重复引用。
      在编译头文件时,若宏已被定义,则略过该头文件,不编译。
    2. 头文件的引用
      1. < >
          引用*系统的头文件*,即**系统库文件**目录下进行搜索
          (会在编译器的安装目录的标准库中开始查找);
      2. “ ”
          引用自定义头文件。先搜索*工程目录*,再搜索系统库的文件目录;
      
  2. 源文件 SourceFiles
    通常包含 源文件版权、版权的声明、对头文件的引用和系统功能的实现代码。

注意:

  • 一般头文件储存在 Include目录下,源文件存储在SourceFiles中

1.2. C++ 代码书写规范


1.2.1. 代码规范 笔记集锦

  1. C++代码规范_规范.pdf

1.2.2. 具体项

  1. Tab键缩进,及时锁紧
  2. 尽可能的多定义变量,方便后面代码的修改
  3. 定义指针变量时,通常使用以p开头的变量;
    例:int * p_array[ ];
    #1 C++概述--NOTE_第1张图片

1.3. 开源项目 学习

1.3.1. 初学开源项目

//写代码的风格;用的知识;

  1. cjson网址:https://sourceforge.net/projects/cjson/
  2. MyTinySTL网址:https://github.com/Alinshans/MyTinySTL
  3. oatpp网址:https://github.com/oatpp/oatpp
  4. Tinyhttpd网址:https://github.com/EZLippi/Tinyhttpd/blob/master/httpd.c
  5. nginx网址:http://nginx.org/
  6. Redis网址:https://redis.io/download

1.3.1.1. C 开源项目

  1. cJSON
    json:一种数据交换的格式文件;
    //网站的代码可以在json的编辑器中重新解析,就能看懂啦;
    该项目主要学习指针;
  2. Tinyhttpd

1.3.1.2. C++ 开源项目

  1. MyTinySTL
    //精简的STL库; //是真的牛逼;
  2. oatpp
    //C++ 实现 web 框架; //类似于Java的Spring框架;
  3. redis
    //高速缓存 什么的 //企业级开发用的
  4. nginx
    //静态服务器 //互联网企业开发 肯定用的
    与动态服务器搭配使用;

1.4. 参考资料

1.4.1. 参考教程

  1. C++教程   //菜鸟教程  笔记参考于菜鸟教程
  2. C++基础教程   //程序员实验室
  3. C++入门教程   //阿里云

1.4.2. 参考文档

  1. 书籍
    1. C++ Primer 第五版 中文版
      地址:C++ Primer 第五版
      //中、英文 及习题集
    2. C++ Primer Plus 第六版
  2. 文档
    1. Visual C++ 文档  //官方文档
    2. 官方文档
      // Visual Studio各种文档 包括编程和软件使用
  3. CHM工具
    1. 开卷有益.app
      能很好的查看chm文件,但是不能搜索;

1.4.3. 参考视频

  1. C++视频教程   //知乎问题
  2. 零基础学编程系列之C++入门   //老九学堂
  3. VS2015系列之C++视频教程与数据结构  //鑫路历程

1.4.4. C++学习思想

1. 学习 C++,关键是要理解概念,而不应过于深究语言的技术细节。
2. C++ 支持多种编程风格。
    您可以使用 Fortran、C、Smalltalk 等任意一种语言的编程风格来编写代码。
    每种风格都能有效地保证运行时间效率和空间效率。
3. 注意模板的使用,尽可能使用C++风格进行编程。

你可能感兴趣的:(C/C++)