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;     //显式地叫回编译器定义的拷贝构造
    };
    
    
  • 相关阅读:
    常见的兼容问题
    css3新增伪类
    完美的js运动框架
    C++ 常用宏
    多线程代码段 自清理线程
    寒假自学(十一)
    寒假自学(十)
    寒假自学(九)
    寒假自学(八)
    寒假自学(七)
  • 原文地址:https://www.cnblogs.com/logchen/p/10199300.html
Copyright © 2011-2022 走看看