• 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语言目录操作总结
    重写strstr、strcpy、memcpy、memset、atof算法
    统计编码量工具
    hdu4348
    bzoj4358: permu
    bzoj2658: [Zjoi2012]小蓝的好友(mrx)
    bzoj2657: [Zjoi2012]旅游(journey)
    bzoj3583: 杰杰的女性朋友
    bzoj3673 bzoj3674可持久化并查集
  • 原文地址:https://www.cnblogs.com/hustxujinkang/p/4214481.html
Copyright © 2020-2023  润新知