关于友元,重载的使用说明

类的友元函数说明:

声明在类内,定义在类外,

不能直接访问类的成员函数,可以通过类的实例访问,但是此时就部分private,还是public

const的重载在c++的重载封装中非常常见并且很实用,在可用const的private函数部分尽量实用.

友元重载一定必须是有至少一个参数是类自身的实例参数

友元函数大多实用const的参数,单数由于不是类的成员函数所以是不能通过const参数构成重载

重点说明iostream的<<, >>的重载,见代码部分

补充说明:但在导出类中使用了友元函数,必须在每个声明的友元函数的最前面加上__declspec(dllexport),因为他是类外的全局函数,所以导出函数的写法是在每个导出函数的头部特别的加上导出说明符..

	DLL_STRING friend istream& operator>>(istream &In,CMyString &obj);

	DLL_STRING friend ostream& operator<<(ostream &out,CMyString &obj);

	DLL_STRING friend bool operator==(const char *pstrSrc,const CMyString &Obj);

<pre name="code" class="cpp">DLL_STRING istream& operator>>(istream &In,CMyString &obj)
{
	char szbuf[255] = "";
	In>>szbuf;
	obj = szbuf;

	return In;
}

DLL_STRING ostream& operator<<(ostream &out,CMyString &obj)
{
	out<<obj.getStr();

	return out;
}

DLL_STRING bool operator==(const char *pstrSrc,const CMyString &Obj)
{	
	return Obj.strCmp(Obj.getStr(),pstrSrc);
	//return Obj == pstrSrc;
}


 
以上结论是通过代码的实现部分总结得出的,并没有按照书本来说明,如果有同学在自己实现部分又不一样的结果,希望说明,大家一起探讨,,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值