• 三五法则


    首先自己好好梳理下自己的理解,然后:

    琢磨设计段100行的代码进行debug,覆盖这6个动作的发生,观察其语义行为。

      1. Home类:成员变量包含 内置类型、Man*、Dog、vector<Chair>

      2. 包含函数的调用/返回、对象拷贝等行为。

      3.  default版本 vs 自定义版本  ,比较其构造的值的变化。


    默认构造(无参)   T()

    拷贝构造       T(const T& )
    移动构造       T()

    拷贝赋值       T& operator=(T& )
    移动赋值       T& operator=(T&& )

    析构         ~T()

    ===============================================
    以上6个行为是instance从{创建--传递--析构} 必用的6个语义。
    如果没自行delete,就存在。(当定义了其他无参构造函数时,默认无参构造如果未default显示保留,会被丢弃)
    ===============================================
    ★ 搞清它们在什么时候被(隐式)调用?

      对于一句初始化语句,分清楚它采用的是何种初始化方式。

    ★ 搞清每一种行为编译器默认版本的语义

       对不同类型的成员,它是如何的?
    ★ 判断什么时候可以使用默认提供的版本,什么时候必须重写/ 如何重写?

    + 自行定义的指定值初始化(有参构造):

      若member a; 在自定义的构造函数中未进行初始化,会怎么样?未定义了 还是该成员使用默认的初始化行为?

    + T foo() {...}

          之前debug发现,返回的对象用的是 拷贝构造、而非赋值。


    定义define、初始化initialize、赋值assign是两回事: 

    ——构造instance时:

        step1: 先初始化其成员(分配内存、赋初值(成员变量可设置初值/ 未指定则采用系统默认初值))

        step2: 若有指定值则再进行赋值 。(通过构造函数的调用参数指定值)

    p.s.  某些情形下,定义内置类型变量时 并不会进行初始化,其值是未定义的。

      “定义一个变量”  (!=定义一个函数/类) 的语义只是:分配内存、指定变量名。(不包含值的初始化)

    =====================================================================================

    ==================================================================================

    =========================================================================================


     默认构造函数

    7.1.5节,

    7.5.3 节

    P236:

     

    拷贝构造函数

      对其各成员 都采取‘拷贝新的相同值的一份’的语义:   ①内置类型、指针、乃至数组直接值拷贝  ②类类型调用其拷贝构造函数进行拷贝。

      所谓“浅拷贝”:对于指针成员,只拷贝指针、不拷贝指针所指向的对象。 有的时候不能采用这种行为。

     P441:

     


    2.2.1节 变量定义

    3.2.1节 定义和初始化string对象

          <第13章 拷贝控制> 全面细致的讨论了这些问题...

    13.1.1节 拷贝构造函数

  • 相关阅读:
    HDU4372 Count the Buildings
    Luogu4292 WC2010重建计划
    「学习笔记」二项式反演
    微软Power BI 每月功能更新系列——10月Power BI 新功能学习
    用Synoptic Panel自定义基于图形的可视化控件--制作一张剧场售票统计报表
    Power BI十大视觉效果,知多少?
    微软Power BI 每月功能更新系列——3月Power BI 新功能学习
    微软Power BI 每月功能更新系列——4月Power BI 新功能学习
    如何使用DAX函数解决动态图表标题
    如何用DAX实现查看每个月中不同类别排名前一位,以及一个简单的svg案例
  • 原文地址:https://www.cnblogs.com/nanlan2017/p/9236744.html
Copyright © 2020-2023  润新知