zoukankan      html  css  js  c++  java
  • 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,表示用户需要编译器默认生成该成员函数,当然这个只对上述六个函数有效。

  • 相关阅读:
    【洛谷p1309】瑞士轮
    【洛谷p1190】接水问题
    KMP算法小记
    【洛谷p1051】谁拿了最多奖学金
    【洛谷p1781】宇宙总统
    【6.12校内test】T2 子集
    【6.12校内test】T3 城市交通费
    【6.12校内test】T1单词序列
    【洛谷p1464】 Function
    IOS基础之 (十二) 类的扩展
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4214481.html
Copyright © 2011-2022 走看看