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 枚举类型名:底层类型{枚举值列表}
  • 相关阅读:
    Silverlight生命周期概述
    NVolecity 处理DataTable 小记
    Adobe CS6 安装的时候,安装到AdobeHelp 死掉的解决方法
    验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate 的解决办法
    为什么要写博客
    [原创]SQL发音考证(搜寻SQL86标准)
    [转载]《暗时间》:为什么你应该(从现在开始就)写博客
    [转载]《暗时间》:书写是为了更好的思考
    [原创]手把手教你写网络爬虫(1):网易云音乐歌单
    javascript简单的日历实现《转》
  • 原文地址:https://www.cnblogs.com/lemon333333/p/10235902.html
Copyright © 2011-2022 走看看