|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 bin554385863 于 2019-11-24 22:51 编辑
- 构造函数:
- //默认构造
- numbers():numsLen(0), numsPtr(nullptr){}
- //使用C风格数字数组构造
- numbers(const tp *arr, const size_t arrSize);
- //字符数组构造
- numbers(const char *ncstr)------2019年11月24日22:35:17增加
- //可变参数构造
- numbers(std::initializer_list<tp> list);
- //拷贝构造
- numbers(const numbers<tp>& nums);
- 注意:使用时请按规范输入数字或者数字字符数组,不然出现数据错误;
- "-566666"---正确;
- "*55555"---错误;*号会转化成错误数据;
- 除了-号请不要再数字字符前添加任何字符包括+号;
- ****************************************************
- 成员函数
- at()(为了方便this指针使用,普通对象请使用索引符[]):
- 按索引获取数字串的元素;
- 按索引修改元素的值;
- size():
- 获取对象的大小
- ****************************************************
- 重载运算符
- [](改)
- 安索引修改对象元素的值;
- +(增):
- 添加元素;
- 合并对象;
- -(删)
- 删除对象中指定的数据;
- 删除父对象中与子对象相同的数据;
- 按索引删除元素参数必须显示声明为size_t类型
- 对象翻转数据的正负属性;------2019年11月24日22:35:32增加
- %(查)
- 判断对象是否包含某数据;
- 判断子对象是否父对象的子串;
- /(查):
- 返回数据在对象中出现的次数;
- 返回对象与对象相同的元素;
- 赋值运算符:
- +=
- /=
- -=
- 右边必须是可改变的对象;
复制代码
1---增加数字字符数组构造函数:
numbers(const char* ncstr);
- template <typename tp>
- numbers<tp>::numbers(const char *ncstr)
- {
- std::string tstr = ncstr;
- if (ncstr[0] == '-')
- {
- numsLen = tstr.size() - 1;
- numsPtr = new tp[numsLen];
- tstr.erase(0, 1);
- for (size_t i = 0; i < numsLen; i++)
- {
- *(numsPtr + i) = tstr[i] - '0';
- }
- }
- if(ncstr[0] != '-')
- {
- numsLen = tstr.size();
- numsPtr = new tp[numsLen];
- for (size_t i = 0; i < numsLen; i++)
- {
- *(numsPtr + i) = tstr[i] - '0';
- }
- }
- }
复制代码
2---增加翻转对象数据正负符号重载:
numbers<tp> operator-(void) const;
- template <typename tp>
- numbers<tp> numbers<tp>::operator-(void) const
- {
- numbers<tp> r_nums;
- for (size_t i = 0; i < numsLen; i++)
- {
- r_nums += -*(numsPtr + i);
- }
- return r_nums;
- }
复制代码
完整代码
numbers.h
|
|