zoukankan      html  css  js  c++  java
  • c++中的 三/五原则

    在c++ 中,当我们定义一个类时,我们显式或隐式地定义了此类型的对象在拷贝、赋值和销毁时做什么?

    一个类通过定义三种特殊成员成员函数来控制这些操作:拷贝构造函数拷贝赋值函数析构函数

    什么是三法则

    C++三法则:如果需要析构函数,则一定需要拷贝构造函数和拷贝赋值操作符。

    如何理解这句话,通常,若一个类需要析构函数,则代表其合成的析构函数不足以释放类所拥有的资源,其中最典型的就是指针成员。

    所以,我们需要自己写析构函数来释放给指针所分配的内存来防止内存泄露。

    那么为什么说“一定需要拷贝构造函数和赋值操作符”呢?

    原因还是这样:类中出现了指针类型的成员。有指针类型的成员,我们必须防止浅拷贝问题,所以,一定需要拷贝构造函数和赋值操作符,这两个函数是防止浅拷贝问题所必须的。

    什么是五法则

    在较新的 C++11 标准中,为了支持移动语义,又增加了移动构造函数和移动赋值运算符,这样共有五个特殊的成员函数,所以又称为“C++五法则”;

    也就是说,“三法则”是针对较旧的 C++89 标准说的,“五法则”是针对较新的 C++11 标准说的;为了统一称呼,后来人们干把它叫做“C++ 三/五法则”;

    博客参考:https://blog.csdn.net/chen1415886044/article/details/104074210 

  • 相关阅读:
    MyBatis的Mapper接口以及Example的实例函数及详解
    数据存储
    广播
    java线程复习3(线程的中断)
    java线程复习2(获取和设置线程信息)
    java线程复习1(线程创建)
    最好的启动方式
    工厂模式
    欧几里得算法
    组合数打表
  • 原文地址:https://www.cnblogs.com/simplepaul/p/12846752.html
Copyright © 2011-2022 走看看