C++学习知识点总结一

  1. 最近稍微有些时间,可以稍微学习一下,现在主要学习一些音视频相关的知识,并将学习到的零散小的知识点记录在这里。
  2. V4L2相当于是Linux系统提供的,全称为Video for Linux 2,提供了一些视频采集的接口,我们只需要直接调用其中提供的接口就行了。
  3. C++ 中的几个核心:封装、抽象、继承、多态。
  4. 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。类 - 类可以定义为描述对象行为/状态的模板/蓝图。方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。
  5. C++编译和C编译基本保持一致,差别在于从gcc变为g++,cout其实就是输出的意思,使用方法cout << “输出内容”;也可以使用cout << “输出内容” << endl;从现象上看就是两者的区别就是前者不换行,后者换行。
  6. 当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动初始化。这个和全局变量与局部变量的存储方式有关,应该是和栈空间或者堆保持联系的。
  7. 在C语言以及C++中都有一个作用域的概念,比如说
        #include
        using namespace std;
        int main()
        {
           int b = 2;
            {
           int b = 1;
            cout << "b = " << b << endl;
          }
           cout << "b = " << b << endl;
        }
    这里的{}就是作用域,但是实际应用中,应该还是要尽量避免这种使用方法,增强程序的可读性。
  8. 静态变量
    存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和 static 变量,只不过和全局变量比起来,static 可以控制变量的可见范围,说到底 static 还是用来隐藏的。虽然这种用法不常见。
    PS:如果作为 static 局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

全局变量和和局部变量同名时,可通过域名在函数中引用到全局变量,不加域名解析则引用局部变量。
    #include
    using namespace std;
    int a = 10;
    int main()
    {
      int a = 20;
      cout << ::a << endl; // 10
     cout << a << endl; // 20
      return 0;
    }
10.
宏定义 #define 和常量 const 的区别
类型和安全检查不同
宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;
const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查
编译器处理不同
宏定义是一个"编译时"概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期;
const常量是一个"运行时"概念,在程序运行使用,类似于一个只读行数据
存储方式不同
宏定义是直接替换,不会分配内存,存储与程序的代码段中;
const常量需要进行内存分配,存储与程序的数据段中。

你可能感兴趣的:(00.C语言学习)