• C++细节系列(零):零散记录


    老规矩:记录细节,等待空余,再进行整理。

    1:const,static,const static成员初始化。

      1、const成员:只能在构造函数后的初始化列表中初始化

      2、static成员:初始化在类外,且不加static修饰。

      3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化。

    2:拷贝赋值函数  和 拷贝构造函数。

      1,拷贝赋值函数.

        1)返回值是 左侧类型的引用。

      2,拷贝构造函数。

        1,通常的主体功能应该为:复制所有非static的类成员。

        2,系统会默认构造。但尽量自行完成(除非类复制很简单)。

        3,参数必须为引用。否则会导致递归调用,最终崩溃。

      3,拷贝赋值函数  和 拷贝构造函数 是相互需要的。即:如果需要定义拷贝赋值函数就必须定义拷贝构造函数。反之亦然。

    3:explicit关键字。

      1,标识此关键字的构造函数,必须显示使用。无法隐式调用。

    4:析构函数。

      1,析构函数函数体内并不进行类成员的销毁。而是当析构函数体完成后,再销毁成员。

      2,对于指针,销毁功能仅销毁指针本身,并不销毁指针指向的对象。所以,需要在析构函数中对指针进行delete/free

      3,在原则上,一个类拥有析构函数,那就应该也拥有自己的拷贝构造函数和拷贝赋值函数。

    5:移动函数。

      1,分为移动函数 和 移动赋值函数。

      2,移动函数(包括赋值)特点:“偷窃”源对象的数据。会导致源对象进入一种不可预测的情况。

      3,移动函数的使用会提升运行效率。但需要注意,如果“偷窃”数据后的对象,依然会被其他线程和函数引用,会导致不可预测的错误。

  • 相关阅读:
    Codeforces Round #564 (Div. 1)
    Codeforces Round #569 (Div. 1)
    SDOI2019R2游记
    BZOJ 3555: [Ctsc2014]企鹅QQ
    SDOI2019R1游记
    计数的一些东西
    多项式的各种操作
    BZOJ 5424: 烧桥计划
    Codeforces Round #545 (Div. 1)
    概率期望学习笔记
  • 原文地址:https://www.cnblogs.com/zheng39562/p/4308482.html
Copyright © 2020-2023  润新知