• C++中的默认成员函数


    一般而言,对于一个用户自定义的类类型,以下四个函数在用户没有自定义的情形下,会由编译器自动生成:

    1、default constructor

    2、copy constructor

        Someclass::Someclass(const Someclass &);

    3、copy assignment operator

        Someclass & Someclass::operator=(const Someclass &);

    4、destructor

    对于C++11,又增加了两个:

    5、move constructor

        Someclass::Someclass(Someclass &&); 

    6、move assignment

       Someclass & Someclass::operator=(Someclass &&);

    要牢记这几个函数的原型(输入参数、返回类型),还有几条规则,关于何时编译器不会生成上述默认成员函数的:

    若用户自定义了任意形式的构造函数(即使是拷贝构造函数),编译器将不会生成默认构造函数

    若定义了析构函数,或拷贝构造函数或拷贝赋值操作符,编译器将不会生成默认的move constructor和move assignment

    若定义了move construcor或move assignment,编译器将不会生成默认的拷贝构造函数或拷贝赋值操作符。

    最后,在C++11中有一种很别致的偷懒的办法,

         Someclass::Someclass(const Someclass &) = default,表示用户需要编译器默认生成该成员函数,当然这个只对上述六个函数有效。

  • 相关阅读:
    PHP之路——MySql基础操作语句
    PHP简单获取数据库查询结果并返回JSON
    iOS 写入文件保存数据的方式
    触摸事件
    UI基础
    UI基础
    UI基础
    VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中
    vbs查找Excel中的Sheet2工作表是否存在不存在新建
    VBS操作Excel常见方法
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4214481.html
Copyright © 2020-2023  润新知