普通构造函数、复制构造函数以及等号重载

#include <stdio.h>

class aaa
{
};  //新建的一个普通类

class test
{
public:
	int a;
	aaa* aa;

	test() //普通构造函数
	{
		printf("普通构造函数test().\n");
	}
	test(aaa* a){ //普通构造函数
		this->aa = a;
		printf("普通构造函数test(aaa* a).\n");
	}
	test(test& t) //复制构造函数
	{
		this->aa = t.aa;
		printf("复制构造函数test(test& t).\n");
	}
	test& operator = (aaa* a) //等号重载
	{
		this->aa = a;
		printf("等号重载test& operator = (aaa* a)\n");
		return *this;
	}
	test& operator = (test& t) //等号重载
	{
		this->aa = t.aa;
		printf("等号重载test& operator = (test& t)\n");
		return *this;
	}
};
int main(int argc, char** argv)  
{  
		aaa* a = new aaa(); //new一个aaa类对象
		test t = a; //将对象指针赋给另一个类test对象,调用的是普通构造函数test(aaa* a)
		test t1 = t; // 屏蔽了复制构造函数也不会报错?同对象赋值,调用复制构造函数
		t1 = t; //调用等号重载test& operator = (test& t) //等号重载
		test t2;
		t2 = a; //调用等号重载test& operator = (aaa* a)
        return 0;  
} 

/*
输出结果如下:
普通构造函数test(aaa* a).
复制构造函数test(test& t).
等号重载test& operator = (test& t)
普通构造函数test().
等号重载test& operator = (aaa* a)
*/ 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值