移动语义测试

#include <iostream>
using namespace std;
class Test{
	public:
		int *mem;
		static int cons_counter;
		static int copy_counter;
		static int move_counter;
		Test():mem(new int(1)){
			cons_counter++;
			cout<<"constructor has been called: "<<cons_counter<<"times"<<endl;
		}
		Test(const Test& t):mem(new int(*t.mem)){
			copy_counter++;	
			cout<<"copy has been called: "<<copy_counter<<"times"<<endl;
		}
		// Test(Test && t):mem(t.mem){
		//     mem=nullptr;
		//     move_counter++;
		//     cout<<"move has been called: "<<move_counter<<"times"<<endl;
		// }
		~Test(){
			delete mem;
			cout<<"destroy Test"<<endl;
		}
};
int Test::cons_counter=0;
int Test::copy_counter=0;
int Test::move_counter=0;
Test returnTest(){
	return Test();
}
struct Test1{
	int arr[10];
	Test1(){
		printf("%x\n",arr);
	}
};
Test1&& test(){
	int aa=0;
	printf("%x\n",&aa);
	Test1 a=Test1();
	for(int i=0;i<10;++i){
		a.arr[i]=0;
	}
	return std::move(a);
}
int main(int argc, const char *argv[]){
	// Test tmp=returnTest();
	// Test &&t=returnTest();
	// const Test &tt=Test();
	// Test t=Test();
	int i;
	int arr[100];
	Test1 &&tmp=test();
	for(i=0;i<100;i++){
		arr[i]=100;
	}
	printf("%x %d\n",tmp.arr,tmp.arr[1]);
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值