zoukankan      html  css  js  c++  java
  • C++11--编译器生成的函数

    using namespace std;
    class Dog {};
    
    /* C++ 03
     * 1 默认构造函数(只有当用户没有声明任何构造函数)
     * 2 拷贝构造(只有当用户没有声明5,6),扩展到C++11之后(只有当用户没有声明3,4,5,6)
     * 3 拷贝赋值(只有当用户没有声明5,6),扩展到C++11之后(只有当用户没有声明2,4,5,6)
     * 4 析构函数
    
     * C++ 11
     * 5 移动构造(只有当用户没有声明2,3,4,6)
     * 6 移动赋值(只有当用户没有声明2,3,4,5)
    
    
    // 看一些例子
    class Cat {    //编译器产生3,4    (C++11中,3弃用)
        Cat(const Cat& ) {} //拷贝构造
    };
    
    class Duck {    //编译器产生4    
        Duck(Duck&&) {}   //移动构造
    };
    
    class Frog {    //编译器产生4
        Frog(Frog&&, int  = 0) {}   //移动构造
        Frog(int = 0) {}   //默认构造
        Frog(const Frog&, int = 0) {}    //拷贝构造
    };
    
    class Fish {    //编译器产生1,2,3(C++11中,2,3弃用)
        ~Fish()    
    };
    
    class Cow {    //编译器产生1,2,4(C++11中,2弃用,如果要用需要显式地叫回)
        Cow& operator=(const Cow&) {}   = delete; //拷贝赋值禁用,虽然禁用仍然认为是用户声明了
        Cow(const Cow&) {} = default;     //显式地叫回编译器定义的拷贝构造
    };
    
    
  • 相关阅读:
    [12.19模拟赛]矩形|扫描线+set
    网 络
    数组(二维)
    数组
    02-线程的三种创建方式
    01-线程(概念篇)
    IO流-文件操作
    Serializable 可串行化接口
    PrintStream 类
    ObjectIntputStream / ObjectOutputStream 类
  • 原文地址:https://www.cnblogs.com/logchen/p/10199300.html
Copyright © 2011-2022 走看看