引用之一

#include <iostream>
//引用
//1)作为形参


void f1(int a)
{
	a = 0;
}
void f2(int& a)
{
	a = 0;
}

class A
{
	int a[1024];
};
void f3(A a)
{
}
void f4(A& a)
{
}

//2)作为返回值
int global = 10;
int g1()
{
	return global;//返回的是临时量
}
int& g2()
{
	return global;//返回值是个变量
}

void main()
{
	int b = 1;
	f1(b);
	std::cout<<b<<std::endl;//1
	f2(b);
	std::cout<<b<<std::endl;//0

	A c;
	f3(c);//拷贝1024字节
	f4(c);//拷贝4字节


	int r = g1();
	//g1() = 4;//左操作数必须为左值

	r = g2();
	g2() = 4;//等同于  global = 4;
	std::cout<< global <<std::endl;
}

#include <iostream>

class A
{
	int* p;
public:
	A()
	{
		p = new int[10];
	}
	A(const A& that)
	{
		p = new int[10];
		for (int i = 0;i < 10; ++i)
			p[i] = that.p[i];
	}
	~A()
	{
		delete [] p;
	}
	//赋值运算符重载
	//1)返回值是类的引用
	 
	A& operator = (const A& that)
	{
		if (this != &that)
		{
			delete [] p;

			p = new int[10];
			for (int i = 0;i < 10; ++i)
				p[i] = that.p[i];
		}
		return *this;
	}
};

class SXB
{
	int* p;
	int size;
	int len;
public:
	SXB();
	SXB(const SXB& that);//拷贝构造
	//同类赋值
};
void main()
{
	A a;
	A b(a);
	A c;
	c = a;//等同于 c.operator=(a);
	
	c = c;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值