zoukankan      html  css  js  c++  java
  • 三五法则

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

    琢磨设计段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节 拷贝构造函数

  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/nanlan2017/p/9236744.html
Copyright © 2011-2022 走看看