文章目录

  • 1 StaticArray设计要点
  • 2 继承关系图和接口实现
  • 3 代码实现

1 StaticArray设计要点

类模板

  • 封装原生数组
  • 使用模板参数决定数组大小
  • 实现函数返回数组长度
  • 拷贝构造和赋值操作

2 继承关系图和接口实现

继承关系图

接口实现

template < typename T, int N >
class StaticArray : public Array<T>
{protected:T m_space[N];public:StaticArray();// 拷贝和赋值操作StaticArray(const StaticArray<T, N>& obj);StaticArray<T, N>& operator= (const StaticArray<T, N>& obj);int length() const;
};

3 代码实现

StaticArray.h

#ifndef STATICARRAY_H
#define STATICARRAY_H#include "Array.h"namespace LemonLib {template < typename T, int N >
class StaticArray : public Array<T>
{protected:T m_space[N];public:StaticArray(){this->m_array = m_space;}// 拷贝和赋值操作StaticArray(const StaticArray<T, N>& obj){this->m_array = m_space;for (int i=0; i<N; i++){m_space[i] = obj.m_space[i];}}StaticArray<T, N>& operator= (const StaticArray<T, N>& obj){if (this != &obj){for (int i=0; i<N; i++){m_space[i] = obj.m_space[i];}}return *this;}int length() const{return N;}
};
}#endif // STATICARRAY_H

main.cpp

#include <iostream>
#include "Object.h"
#include "Exception.h"
#include "List.h"
#include "Seqlist.h"
#include "Staticlist.h"
#include "Dynamiclist.h"
#include "Staticarray.h"using namespace std;
using namespace LemonLib;int main()
{StaticArray<int, 5> sa;for (int i=0; i<sa.length(); i++){sa[i] = i;}for (int i=0; i<sa.length(); i++){cout << sa[i] << endl;}StaticArray<int, 5> sa1 = sa;for (int i=0; i<sa1.length(); i++){cout << sa1[i] << endl;}StaticArray<int, 5> sa2;sa2 = sa;for (int i=0; i<sa2.length(); i++){cout << sa2[i] << endl;}sa[9] = 0;return 0;
}

参考资料:

  1. 数据结构实战开发教程

StaicArray相关推荐

最新文章

  1. 面试高频——JUC并发工具包快速上手(超详细总结)
  2. 吴琦:视觉-语言导航新进展:Pre-training 与 Sim2Real | 青源 Talk 第 12 期
  3. 接口中定义变量必须为public static final的原因
  4. UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介
  5. Django使用心得(二)
  6. 进击的UI------------网络判断
  7. gdb查看空指针 linux_5 个鲜为人知 GNU 调试器(GDB)技巧
  8. 解决:elasticsearch 更新报错:The number of object passed must be even but was [1]
  9. java中一个线程最小优先数_Java线程的优先级
  10. inputstreamreader未关闭会导致oom_ThreadLocal 一定会导致内存泄露?
  11. 宝元系统通讯软件recon_企业即时通讯工具需注意哪些问题
  12. python判断用户名密码是否正确_Python 判断输入的用户名和密码是否正确
  13. oracle jta,JTA和两阶段提交,处理全局事务
  14. FDM 3D打印机常见故障列总 挨个排除
  15. 中国宠物医疗市场产业消费需求及盈利前景预测报告(2022-2027年)
  16. OpenCV入门系列1:图像组成与OpenCV基本操作函数
  17. imap 已读回执_确保同事看到已读回执和延迟提醒电子邮件的“重要电子邮件”...
  18. Android 优惠券功能开发
  19. 做一个从不废话的程序员之基础中的基础
  20. css实现图片等宽高

热门文章

  1. sharp扫地机器人讲话_扫地机机器人,智能扫地机器人推荐
  2. 【Paper】2021_Observer-Based Controllers for Incrementally Quadratic Nonlinear Systems With Disturbanc
  3. 【STM32】输入捕获实验代码详解
  4. 成员函数和成员变量分开存储
  5. 【工具】PlatformIO终于能用了,arduino大型项目开发环境PIO,编辑器+编译器+调试全功能...
  6. 关于STM32像EPROM一样可以单字节写内部Flash的理解
  7. C1之路 | 训练任务03-WEB
  8. java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC
  9. CSS学习之多类别选择器
  10. vue学习笔记(三)