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;     //显式地叫回编译器定义的拷贝构造
    };
    
    
  • 相关阅读:
    C#编程总结(三)线程同步 多线程
    配置 Spring.NET
    C# Redis
    WPF MvvmLight RelayCommand 绑定Command 的使用
    WCF编程系列(一)初识WCF
    C#/WPF程序开机自动启动
    C# 创建Windows Service(Windows服务)程序
    前端Js框架汇总
    列式存储和行式存储
    llvm-3.4.2 编译失败 解决方案
  • 原文地址:https://www.cnblogs.com/logchen/p/10199300.html
Copyright © 2011-2022 走看看