C++学习指南

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33574890/article/details/86292136

前言

  • 学习C++是为了进行图形学编程
  • 毕竟对于图形学的某些概念,只是了解而不动手会逐渐丧失兴趣
  • 学习一门语言最好就是和已经学过的语言进行对比

C++ 与C#

  • C++的注释有// /* */,与C#相同
  • C++有7种基本类型,有void类型与 wchar_t 宽字符类型
  • 基本类型的修饰符 long short signed unsigned
  • C++的代码里面同时有头文件和命名空间两种概念
  • C++是大小写敏感的
  • C++具有变量声明和变量定义两个部分,函数声明和函数定义
    • 当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的
    • 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
  • C++中有两种类型的表达式,左值与右值(只是换了一种说法)
  • C++和C都有有局部变量,全局变量,形式参数,而且全局变量会自动初始化,局部变量不会且名字相同进行覆盖
  • 定义常量用#define与const
  • C++有类型限定符,const volatile restrict
  • 存储类, 定义变量的可见性与生存周期
    • auto
    • register
      • 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。
    • static
      • 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
    • extern
      • extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。
    • mutable
      • mutable 说明符仅适用于类的对象
    • thread_local (C++11)
      • 使用 thread_local 说明符声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。
  • 三种调用形式
    • 传值调用
    • 指针调用
    • 引用调用
  • C++也有默认参数,支持Lambda表达式
  • 在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。
  • 如果要使用数学库,您需要引用数学头文件 。
  • C++有两种类型的字符串表示形式
    • 继承了C,字符串以null结尾
      • 不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾
    • 引入的string类类型
  • 指针
    • 和C一个样子,type *pointerName
    • 所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。
  • 引用
    • 变量名称是变量附属在内存位置中的标签
    • 把引用当成是变量附属在内存位置中的第二个标签
  • 继承
    • C++可以继承多个类

    • 继承类型

      • 当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。
    • 我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:

    • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。

    • 保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。

    • 私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。

猜你喜欢

转载自blog.csdn.net/qq_33574890/article/details/86292136