C++知识点(四)类与对象,结构体、联合体、枚举类

对象:属性和行为;将同一类属性和行为抽象为类

1.面向对象的基本特点:

  • 抽象:将同一类对象的共同属性和行为进行概括,形成类
  • 封装:
    • 将抽象出的数据、代码封装到一起,视为一个整体
    • 增加安全性和简化编程
  • 多态:同一名称、不同功能实现方式,减少标识符个数
  • 继承:在已有类的基础上进行扩展,形成新的类,有利于代码重用

2.内联成员函数:类中声明定义,类外定义inline

3.构造函数:

  • 用于对类的对象初始化,在对象创建时自动调用
    •   没有return语句
    •   可以有形参,可以无形参
    •   可以是内联函数
    •   可以重载
    •   可以带默认参数
  • 默认构造函数:
    •   没有自定义时,编译器在编译时会生成一个隐含的构造函数
    •   若已定义构造函数,但仍希望生成默认构造函数,使用“=default”

4.委托构造函数

  • 使用情况:形参不同
  • 使用类的其他构造函数来执行初始化过程

5.复制构造函数

  • 使用情况:对象的赋值,对象形参实参、返回值的传递
  • 默认复制构造函数,未自定义时:编译器自动生成,一一对应赋值
  • 自定义时,
    • 格式为类名::类名(const 类名 &对象名),const保证原对象不被修改,参数为对象的引用
    • 含有指针时,需要深拷贝,要自定义复制构造函数
  • 不希望函数被复制构造:
    •   声明为private
    •   "类名(const 类名 &对象名)=delete"

6.析构函数

  • 对象生存期消亡时,自动调用析构函数,释放资源
  • 默认析构函数:~类名();
  • 自定义析构函数

7.类的组合

  • 组合类:类中成员是已有类的对象
  • 组合类的构造函数:1)初始化本类数据成员 2)初始化对象成员(其构造函数会自动调用,但需要传递初始参数)
  • 类名::类名(对象成员的所需形参,本类成员所需形参):对象1(参数1),对象2(参数2)...{}
  • 最好构造函数要写一个默认构造函数,避免发生组合类无法构造情况

8.前向引用声明

  • 两个类相互引用时,两个声明的次序改如何决定?即用到前向引用声明
  • 前向引用声明只为程序引入一个标准符,具体声明在其他地方,class B;
  • 不能涉及到具体细节,包括对象

9.UML语言

  • 事物、关系、图

10.结构体struct

  • 默认访问属性:public
  • 使用情况:保存数据,而没什么操作
  • 特殊的类

11.联合体union

  • 使用情况:存储空间的公用,任意两个成员不会同时有效

12.枚举类enum class

  • 使用情况:作用域限制在枚举类中,使用时枚举类名::枚举值名
  • 语法:enum class 枚举类型名:底层类型{枚举值列表}
原文地址:https://www.cnblogs.com/lemon333333/p/10235902.html