|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 bin554385863 于 2019-11-21 13:32 编辑
数字的字符串
2019年11月21日11:44:00
numbers.h
- #ifndef NUMBERS_H
- #define NUMBERS_H
- #include <iostream>
- #include <initializer_list>
- template <typename tp>
- class numbers
- {
- private:
- size_t numsLen;
- tp *numsPtr;
- public:
- //默认构造
- numbers() : numsLen(0), numsPtr(nullptr) {}
- //使用C风格数字数组构造
- numbers(const tp *arr, const size_t arrSize);
- //可变参数构造
- numbers(std::initializer_list<tp> list);
- //拷贝构造
- numbers(const numbers<tp> &nums);
- /*--------------------------------------------------------*/
- //按索引获取元素;按索引修改元素的值
- tp &at(const size_t index);
- //对象的大小
- size_t size()const;
- /*--------------------------------------------------------*/
- //重载下标运算符
- tp &operator[](const size_t index);
- //重载函数调用符()
- numbers<tp> &operator()(const numbers<tp> &nums);
- /*--------------------------------------------------------*/
- //添加元素
- numbers<tp> operator+(const tp num);
- //合并对象
- numbers<tp> operator+(const numbers<tp> &nums);
- /*--------------------------------------------------------*/
- //深度拷贝
- numbers<tp> &operator=(const numbers<tp> &nums);
- friend std::ostream& operator<<(std::ostream& os, numbers<tp>& nums)
- {
- size_t sz = nums.size();
- for (size_t i = 0; i < sz; i++)
- {
- os<<nums[i]<<" ";
- }
- return os;
- }
- ~numbers()
- {
- delete [] numsPtr;
- }
- };
- #endif
复制代码
----------------------------
numbers.cpp
--------------------------------------------------------------
main.c
- #include "numbers.cpp"
- int main(int argc, char const *argv[])
- {
- numbers<int> nums = {1, 2}, a, b = {5, 6}, c = {7, 8, 9};
- a(nums);//测试()的重载
- a = a + 3 + 4 + b + c + 10;//测试+号的重载
- std::cout<<a<<"\nsize = "<<a.size()<<std::endl;
- return 0;
- }
复制代码
----------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe
--stdin=Microsoft-MIEngine-In-k52q2f0n.kxj --stdout=Microsoft-MIEngine-Out-nocoxtbv.vhe --stderr=Microsoft-MIEngine-Error-xpdxnbxc.0yk
--pid=Microsoft-MIEngine-Pid-xqgq4qdr.b0g --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
1 2 3 4 5 6 7 8 9 10
size = 10
E:\Users\admin\Documents\VScode> |
|