3.3. C++

3.3.1. C++学习笔记

学习C++过程中,遇到的一些内容,觉得有必要记录下来,以供后用。

其中主要是之前用C语言,所以接触C++,有些内容不太习惯,因此记录C++中和C不同的,需要注意的部分内容。

  1. protected,public,private

    对应的含义,用下表,可以很容易区分:

    表 3.1. protected,public,private之间的区别

      关键字
      Private 私有 Protected 受保护 Public 公有
    对应作用(允许谁访问) 友元函数 友元函数 友元函数
    该类自己的函数 该类自己的函数 该类自己的函数
      子类的函数 子类的函数
        该类的对象

  2. 函数 带默认值的参数

    可以在调用函数的时候,不给那些带默认值的参数赋值,即调用函数时候,参数少了几个。

    不过要注意的是,带默认值的参数,肯定都是从最右边的一个或几个。

  3. 枚举变量的引用

    类名::某一枚举变量值

    而不是C语言中直接引用:某一枚举变量值

  4. 用new生成的变量与直接定义变量的区别

    知道new要和delete配对使用。

    直接定义变量:函数中的局部变量的话,在栈stack中分配,静态分配,函数调用完,自动释放内存,即编译器自己帮你释放内存,不需要你关心。

    全局的话,应该和C语言中的没区别,就是普通全局变量,始终占用内容,会增加程序耦合度,在可以的情况下,应尽量少用。

    用new生成的变量:动态分配,在堆heap中分配,所以要自己关心内存的使用,在不用此变量的时候,用delete释放内存,否则就产生了内存泄露,即有部分不再使用的变量存在于内存中,属于站着茅坑不拉屎的类型。

    一般常见用法一直就是在类的构造函数中用new分配内存给某个变量,然后对应地在析构函数中用delete释放对应变量所占的内存。

  5. 重载Overload

    同一个函数名,参数的个数和类型不同。

  6. 关于继承inherit

    没啥多说的,只是自己不太熟悉,导致看到某个类B调用某个函数func1,结果在B类的定义中找不到,最后才发现原来是B类继承A类,A类中有public的函数func1,因此才有B可以调用func1。