• 第一章 从C到C++



    *北大郭炜C++慕课听课笔记*


    引用

    • 相当于给变量取了别名,对其中任意变量的修改也会造成另一变量值的改变

    • 用法:

      • 引用定义后不可再修改引用对象

      • const成常引用变量时,不可对通过引用变量更改引用值(常指针变量与之类似)

    • 用于函数形参

    • 用于函数返回值

      int &getn(){return n;}
      int main(){
          getn()=5;
          output(n);
          return 0;
      }
      

    动态内存分配

    1. 用法

      int *p=new int;
      delete p;
      p=new int[10]; //Assign space of the int array for p
      delete [] p; //Delete the array
      
    2. malloc/free的差异:

      • new能够创建对象,会调用构造函数,而malloc只是单纯分配了一块空间
      • delete删除对象时调用析构函数,保证类内申请的动态内存能通过析构函数一并释放,而free只是单纯释放指针所指空间
    3. delete&delete []的差异:

      • 对于简单类型的数组,两者无差异
      • delete虽释放数组空间,但只调用第一个元素的析构函数,其余元素不调用。

    函数缺省参数&内联函数&重载函数

    缺省参数

    1. 目的:提高程序可扩充性(新增参数时,不需要修改原有参数)
    2. 只能是右边的连续几个参数缺省,不可以跳过某个参数

    内联函数

    1. 目的:减少函数调用开销
    2. 适用于简单的函数,执行速度快
    3. 编译器直接将函数代码嵌入调用处

    重载函数

    1. 目的:减小命名的复杂性
    2. 条件:函数输入参数个数 | 类型 | 顺序不同(返回类型不同的不算)
    3. 编译器根据函数输入类型选择相应函数

    类与对象

    结构化程序设计的缺陷

    1. 程序=数据结构+算法
    2. 程序由全局变量及众多相互调用的函数组成,函数与其操作的数据结构没有直观联系
    3. 随程序规模增大,函数与数据结构的关系、函数间调用关系不直观
    4. 没有封装、隐藏概念,不利于程序维护、扩充、排错
    5. 关系复杂,难以复用

    面向对象程序设计

    1. 面向对象的程序=类+类+类+……

    2. 将数据结构和操作该数据结构的函数捆绑在一起——即封装

    3. 特点:抽象、封装、继承、多态

    4. 内存分配:等于成员变量大小之和,函数为对象公用,另外存储

    5. 运算:可以用=赋值,但不能直接比较大小

    6. 访问属性:

      • private仅该对象成员函数或同类成员函数可访问
      • protected 仅同类成员函数及派生类可访问
      • public 任意位置可访问
    7. 隐藏: private对象仅可通过成员函数访问,便于后期程序维护

    8. 函数重用: 成员函数参数表不同即可(需要注意避免缺省参数二义性),如

      class A{
          int x;
          public:
          	void value(int n=0){x=n;}
          	int value(){return x;}
      } //当调用value()时,存在二义性
      
  • 相关阅读:
    Moment.js 超棒Javascript日期处理类库
    java模拟http/https post请求
    Mysql中int和varchar类型
    ssh免密码登录
    Linux优雅退出问题
    Jenkins的权限控制和Rundeck的远程认证
    Jenkins系统+独立部署系统
    Nginx基本介绍
    初窥项目构建
    Rundeck概况
  • 原文地址:https://www.cnblogs.com/DreamEagle/p/12631944.html
Copyright © 2020-2023  润新知