欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

第一章 从C到C++

程序员文章站 2022-06-24 13:07:13
引用 相当于给变量取了别名,对其中任意变量的修改也会造成另一变量值的改变 用法: 引用定义后不可再修改引用对象 加 成常引用变量时,不可对通过引用变量更改引用值(常指针变量与之类似) 用于函数形参 用于函数返回值 动态内存分配 1. 用法 2. 与 的差异: 能够创建对象,会调用构造函数,而 只是单 ......

引用

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

  • 用法:

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

    • 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()时,存在二义性