C值多态中,传统多态与类型擦除有何区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计12505个文字,预计阅读时间需要51分钟。
引言:我有一个显示屏模块:模块上有一个128*64的单色显示屏,一个单片机(B)控制它显示的内容。单片机的IC总线通过四个排针连接到其他单片机(A)上,A给B发送指令,B绘制显示内容。
引言
我有一个显示屏模块:
模块上有一个128*64的单色显示屏,一个单片机(B)控制它显示的内容。单片机的I²C总线通过四边上的排针排母连接到其他单片机(A)上,A给B发送指令,B绘图。
B可以向屏幕逐字节发送显示数据,但是不能读取,所以程序中必须设置显存。一帧需要1024字节,但是单片机B只有512字节内存,其中只有256字节可以分配为显存。解决这个问题的方法是在B的程序中把显示屏分成4个区域,保存所有要绘制的图形的信息,每次在256字节中绘制1/4屏,分批绘制、发送。
简而言之,我需要维护多个类型的数据。稍微具体点,我要把它们放在一个类似于数组的结构中,然后遍历数组,绘制每一个元素。
不同的图形,用相同的方式来对待,这是继承与多态的最佳实践。我可以设计一个Shape类,定义virtual void draw() const = 0;,每收到一个指令就new一个Line、Rectangle等类型的对象出来,放入std::vector<Shape*>中,在遍历中对每个Shape*指针调用->draw()。
但是对不起,今天我跟new杠上了。单片机程序注重运行时效率,除了初始化以外,没事最好别瞎new。
本文共计12505个文字,预计阅读时间需要51分钟。
引言:我有一个显示屏模块:模块上有一个128*64的单色显示屏,一个单片机(B)控制它显示的内容。单片机的IC总线通过四个排针连接到其他单片机(A)上,A给B发送指令,B绘制显示内容。
引言
我有一个显示屏模块:
模块上有一个128*64的单色显示屏,一个单片机(B)控制它显示的内容。单片机的I²C总线通过四边上的排针排母连接到其他单片机(A)上,A给B发送指令,B绘图。
B可以向屏幕逐字节发送显示数据,但是不能读取,所以程序中必须设置显存。一帧需要1024字节,但是单片机B只有512字节内存,其中只有256字节可以分配为显存。解决这个问题的方法是在B的程序中把显示屏分成4个区域,保存所有要绘制的图形的信息,每次在256字节中绘制1/4屏,分批绘制、发送。
简而言之,我需要维护多个类型的数据。稍微具体点,我要把它们放在一个类似于数组的结构中,然后遍历数组,绘制每一个元素。
不同的图形,用相同的方式来对待,这是继承与多态的最佳实践。我可以设计一个Shape类,定义virtual void draw() const = 0;,每收到一个指令就new一个Line、Rectangle等类型的对象出来,放入std::vector<Shape*>中,在遍历中对每个Shape*指针调用->draw()。
但是对不起,今天我跟new杠上了。单片机程序注重运行时效率,除了初始化以外,没事最好别瞎new。

