c++重载浅析

重载的含义
c++允许在同一个作用域中某个函数和运算符指定多个定义,重载声明是指一个与之前已经在作用域里声明过的函数或者方法具有相同名称的声明,他们的参数列表和实现是不同的。
重载函数
在同一个作用域里,可以声明几个功能相似的同名函数,当时同名函数的参数个数,类型和我顺序必须不同。
例如通过一个重载 printf 函数,输出不同 参数类型 的输出值。
重载运算符
重载的运算符是带有特殊名称的函数,函数名由关键字operator以及其后要重载的运算符符号构成,将对象作为参数进行传递,对象的属性用this运算符进行访问。

1、小型字符串 重载运算符+

MinString operator + (const MinString& AddStr)
{
    MinString NewStr("");//新建字符串
    if (AddStr.length != 0)//参数不为零
    {
        if (NewString.sPtr != 0)//原有字符串不为零
            delete[]Newstr.sPtr;//清空字符串
        NewStr.length = length + AddStr.length;//求出新的长度
        NewStr.sPtr = new char[NewStr.length + 1];//新char 一个字符串长度
        strcpy(NewStr.sPtr, sPtr);//将原有的字符串复制到新的字符串中
        strcat(NewStr.sPtr, AddStr.sPtr);//将新加入的字符串也加入
    }
    return NewStr;
}

2、小型字符串 重载运算符+=

MinString& operator+=(const MinString& AddStr)
{
	char temp[100];//临时数组
	if (AddStr.length != 0)
	{
		strcpy(temp, sPtr);//将对象复制到临时数组中
		int OldLen = length;//旧的数据长度
		if (sPtr != 0)//如果数据等于0会有数据泄露的后果
			delete[]sPtr;
 		length = OldLen + AddStr.length; //新的数据长度
		sPtr = new char[length + 1];//新的数据区
		strcpy(sPtr, temp);//将临时数组的数据复制到此对象中
		strcat(sPtr, AddStr.sPtr);
	}
	return *this;
}

3、类intArray 重载运算符[]

intArray::inArray(const char* filename)
{
	ifstream myFile(filename);
	int len = 300;
	arry = new int[len];
	length = 0;
	while (myFile>>array[lenghth++]);
	length--;
	myFile.close();

}

3、小型字符串重载运算符<<和>>

friend ostream& operator<<(ostream& output, const MinString& s)//重载流插入运算符
{
	output << s.sPtr;
	return output;
}
friend istream& operator>>(istream& input, const MinString& s)
//重载符提取运算符
{
	char temp[100]; //用于输入的临时数组
	temp[0] = '0';//初始化
	input >> setw(100) >> temp;
	if (s.sPtr != 0)
		delete[]s.sPtr;//避免内存泄漏
	int inLen = strlen(temp);//输入字符串长度
	s.length = inLen;//赋长度
	s.sPtr=new char[s.length+1]
		if (inLen != 0)
		{
			strcpy(s.sPtr, temp);
		}
		else
		{
			s.sPtr[0] = '\0';
		}
	return input;
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值