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

  • 相关阅读:
    C语言I博客作业04
    C语言II博客作业04
    C语言II作业03
    C语言II博客作业02
    C语言II博客作业01
    第一周C语言作业
    C语言I博客作业02
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4214481.html
Copyright © 2011-2022 走看看