移动构造函数

守給你的承諾、 提交于 2020-01-29 04:54:27

online c++ compile

https://github.com/QuantStack/xeus-cling

 

 

#include <iostream>
using namespace std;
//IntNum getNum();

class  IntNum{
public:
    IntNum(int x=0):xptr(new int(x)){
        cout<< "call default constructor ---"<<endl;
    }
    IntNum(const IntNum &n): xptr(new int(*n.xptr)){
        cout<< "call copy constuctor ----" <<endl;
    }
    IntNum(IntNum && n):xptr(n.xptr){
        n.xptr = nullptr;
        cout << "call move Constuctor ----"<<endl;
    }
    
private: 
 int * xptr;
};

IntNum getNum(){
    IntNum intNum;
    return intNum;
}

main(){
    getNum();    
    getNum();    
    getNum();    
    getNum();    
}

 

#include <iostream>
using namespace std;
//IntNum getNum();

class  IntNum{
public:
    IntNum(int x=0):xptr(new int(x)){
        cout<< "call default constructor ---"<<endl;
    }
    IntNum(const IntNum &n): xptr(new int(*n.xptr)){
        cout<< "call copy constuctor ----" <<endl;
    }
    IntNum(IntNum && n):xptr(n.xptr){
        n.xptr = nullptr;
        cout << "call move Constuctor ----"<<endl;
    }
    
    ~IntNum(){
        delete xptr;
        cout<< "delete deConstructor ---"<<endl;
    }
    
private: 
 int * xptr;
};

IntNum getNum(){
    IntNum a;
        IntNum b;
    bool flag = true;
    if(flag == true)
        return a;
    else 
        return b;
    
    // IntNum&& c = IntNum();
    // return c;
}

main(){
    getNum();    
    // getNum();    
    // getNum();    
    // getNum();    
}

 

执行结果

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!