前言
- 学习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,字符串以null结尾
- 指针
- 和C一个样子,type *pointerName
- 所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。
- 引用
- 变量名称是变量附属在内存位置中的标签
- 把引用当成是变量附属在内存位置中的第二个标签
- 继承
-
C++可以继承多个类
-
继承类型
- 当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符 access-specifier 来指定的。
-
我们几乎不使用 protected 或 private 继承,通常使用 public 继承。当使用不同类型的继承时,遵循以下几个规则:
-
公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
-
保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
-
私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
-