SHU OOP强调知识

  • 变量定义的五要素
    - 1.储存类型(决定生命期以及可见性,在某函数之内:auto:局部自动变量,可省略 static:静态局部变量;在所有函数之外:static:静态全局变量,如有缺省就是全局变量)
    - 2.数据类型(决定变量的储存格式以及取值范围)
    - 3.变量名
    - 4.变量初始值
    - 5.变量地址(系统确定)
    • 类的基础
      • 对象的基本空间:类对象的基本空间是对象的非静态数据成员所占用的空间总和,一般占sizeof(类名或对象名)个字节,成员函数为该类的所有成员共享;资源空间不能被sizeof读取
      • 类成员的访问控制:
        • 三个保留字:public protected private
        • 结构体与类的区别: class或struct关键字
      • 数据成员和成员函数
        • 数据成员一般设为private或protected
        • 若成员函数是protected或private,仅限类的其它成员函数或友元函数调用。类的成员函数对同类的所有对象均有无限制的访问能力(除基类继承来的私有成员)
        • 成员函数可以定义在类内或类外: 定义和声明成员函数的方式与普通函数差不多,成员函数的声明必须在类的内部,它的定义既可以在类的内部也可以在类的外部,作为接口组成部分的非成员函数的定义和声明都在类的外部,类体外定义成员函数时,必须使用如下格式:名字空间名::类名::成员函数名
        • 定义在类内的函数隐含inline建议
      • 创建类对象:
        • 类名不占空间。
    • 对象的自我表现
      • 对象调用其成员函数是发送消息给对象
      • this常量指针
        • this是一个常量指针(类名 * const this),不允许改变this中保存的地址
        • this介绍
        • 指针
      • 常量成员函数
        • 常量成员函数介绍: const成员函数 常量成员函数
        • 常量对象只能调用const成员(常量对象的this指针是常量指针常量)
    • 类模板与模板类
      • 附:类模板
      • 编译系统不便宜函数模板只编译模板函数;编译系统也不编译类模板,只编译模板类
  • 构造函数及赋值运算
    • 构造函数分类与介绍
      • 构造函数完成处理对象空间、构造结构和初始化数据成员等工作
      • 没有构造函数就不能构造对象,任何类至少要有两个构造函数,其中一个是拷贝构造函数,另一个可以不是默认构造函数,默认构造函数不是必须的
      • 构造函数与默认构造函数: 构造函数的基础知识,后续:7.5,15.7,18.1.3
        • 注意:调用默认构造函数时应该如下
          1
          2
          TIME t;//调用默认构造函数
          TIME t();//不是默认构造函数,是一个函数原型
      • 转换构造函数:带一个实参的构造函数(调用时传入一个实参),它可以实现数据类型的隐式转换或强制转换,即可以将非该类成员的数据类型转换并且初始化新创建的类对象
        • 利用转换构造函数初始化的格式
          类名 对象名(实参,实参,...);
          类名 对象名 = 转换构造函数的实参;
    • 构造函数的使用
      • 创建对象数组
        • 类名 对象数组名 [元素个数] = {}
          其中大括号内可以是一个已经存在的对象(利用拷贝构造函数初始化数组元素),也可以显式地调用构造函数现场构造新的类放入数组(如Studnt(“0123”,“Chen”,‘m’,19)),也可以是转换构造函数的实参表(逗号隔开)
      • 创建动态对象或动态对象数组
        • 创建动态数组每一个元素的时候都要调用一次构造函数,且调用的是带实参的构造函数
          1
          2
          3
          new 类名;
          new 类名 (实参,实参);//调用构造函数
          new 类名[元素个数](实参,实参...)
    • 析构函数(见书)
    • 拷贝构造函数
      • 原型格式:类名 (const 类名 &);
      • 拷贝构造函数也可以在类外定义,同样需要指出类名
  • 补:对象的创建以及销毁
    • 函数的返回值:值返回的函数返回的是一个临时对象,临时对象只能做右值,视为常量,因此如果需要对值返回函数进行复合运算(例如cout<<a+b;)此时应该将接收该变量的参数设置为常量引用型;如果是非const引用,则只能绑定在运行期间具有生命的变量,(函数返回的值不具有生命,在返回后被使用后就被销毁,如果没有被使用,则直接销毁)

SHU OOP强调知识
https://mapllle.site/2022/09/01/Language/CPP/CPPschool/
作者
MAple
发布于
2022年9月1日
许可协议