zoukankan      html  css  js  c++  java
  • 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 枚举类型名:底层类型{枚举值列表}
  • 相关阅读:
    BZOJ 1036 树的统计
    codevs 4712 gcd与lcm问题
    codevs 1574 矩阵乘法
    Python定时任务框架APScheduler
    PHP集成支付宝快速实现充值功能
    玩转Web之easyui(二)-----easy ui 异步加载生成树节点(Tree),点击树生成tab(选项卡)
    玩转Web之easyui(一)-----easy ui datagird 分页
    Android访问服务器(TOMCAT)乱码引发的问题
    工厂方法模式--结合具体例子学习工厂方法模式
    简单工厂模式--结合实例学习简单工厂模式
  • 原文地址:https://www.cnblogs.com/lemon333333/p/10235902.html
Copyright © 2011-2022 走看看