实习中的一总结 [大三四八九月实习]
来源:互联网 发布:穿越火线手游卡墙软件 编辑:程序博客网 时间:2024/04/30 23:40
1 关于C++类、接口设计
在实习公司无意领到一个C++的小任务,然后开始抱着《C++三部曲》开始看。虽然没出什么成果,感慨却是有一小推。
1.1 程序设计
在程序设计与程序实现时需要注意以下几个方面:
(1) 明确实际对象,设计的数据结构要与实际的对象结构保持一致(当然可以省略掉明显的不必要部分)。
(2)最基本的,在设计一个类时,如何创建此类对象以及如何销毁此类对象的方式要设计合适。
(3) 针对设计的数据结构(对象)来设计函数方法时,增加一个函数测试一个,直到正确为止。
(4) 如果数据结构设计得不好而函数方法已经写了很多,整个项目的结构对于设计者来说都已经显得紊乱,则可马上重构项目结构,回到(1)。
1.2 学习任务 应来者不拒
当然,如今学习对象众多。咱要不拒的是精华非糟粕也。
作为自动化的我念想着:我一个自动化的怎么和C++设计搞在一块了。但是为了实现对学习来着不拒的目标,我欣然接受了这个任务。反正学习嘛,最重要的是练习学习能力和思维能力,这两者提升上去了,学习到的内容的准确度及拿捏未知部分的知识的能力就会得到大大的提高。
学术界限不应该分得太淸,在每次受到的锻炼(练习)中还需要所收获到的应该是方法与思维方式,最后达到不管面对什么问题都能搞静下心来将问题解决掉的目标。这才是学习的目的,同时这也是一种学习目的积累的方式。
果然不出我所料,在这次C++类、接口的设计过程中,除了克服设计上的陌生与C++基础之外,还让我重新明白了以前在C中没有明白的问题(也或许是多久没有用C来搞项目了)。
2 just pointers, not just pointers
2.1 just pointers variable
想想在大一那个懵懂(不管是看事物还是看待学习,虽然现在还是)的年代,不要说是指针,数组的一二维、结构体等数据结构就将咱弄得有些不知去向,整天觉得C的难度已经超过了数学。
但对于指针本身来说它就是一个指针变量而已。那么它同样有变量所拥有的属性:作用域、生存期……。对于局部指针变量来说,作用域没了它的地址也被释放掉了,这个指针变量也就没了。它就跟定义在局部地区(函数内部(包括main函数),函数参数,大括号内)的变量是一个属性,只不过变量本身存的是值,指针存的是地址而已。那什么是地址呢,地址也是值。但编译器不会允许你将一个值( 0除外)赋给指针,它要求编译器存一个变量地址格式的值(地址格式的值不是值么,是的)。编译器这么做只是为了保证指针存的值里面还存有其它的内容而已[单指针 ],因为这才是指针存在的真正意义,它通过地址访问内容,只要针对当前指针来说所存的地址还没有被系统释放掉,那么指针做的一切取内容操作都是有意义的。
2.2 not just pointers variable
指针之所以不仅再是一个指针变量是因为指针能够指向一块连续内存块的首地址。
(1) 对于已经存在(某数组,结构体)的一块连续内存,只需要将此块内存的的首地址赋给一个指针变量( 32bit的系统,一个指针变量占据4个字节内存),通过此指针运算就可以访问到这块连续内存块的内容。如在函数传址就是将生存期比指针更大(或相等)的对象的首地址复制过去,而不用将整个数据结构复制过去(传值)而在栈上开辟一块与此数据结构占用相同大小内存的内存块。
(2) 在一个程序中完全不使用点堆内存好像有点说不过去。当使用malloc/free( C )、new/delete( C++ )来对指针赋值时,其实此时对于程序员来说,主要对象已经是首地址被指针指向的内存块(及内容)。主要对内存块操作以下内容:
[1] 初始化申请过来的堆内存块。
[2] 访问堆内存块的内容,这个步骤往往要通过指向此块内存的指针来实现访问。
[3] 释放申请的内存块,此步骤通常需要通过指针来记住动态内存的首地址,在多动态分配内存块的前提下还需要注意释放顺序。指针没有指向任何首地址时胡乱释放也是不对的。这都是造成内存泄露的原因。
C++的动态内存分配还将对象的思想加了进去。
3 总结
(1) 供咱开发、设计的东西本身在应用开发方面对于开发者来说是简单的(设计的原则),只是可能在理解它所意味的简单应用时有些困难。
(2) 咱开发、设计的东西也要简单。不仅有利于自己的开发(可能设计会稍难),也利于使用者的使用和开发。
(3)综合(1),(2)两点,咱设计、开发的思想都是一致的,只是设计的对象不同。导致成品不同,功能不同。
Note Over。
- 实习中的一总结 [大三四八九月实习]
- 第一个月实习总结 [大三四八九月实习]
- 第二月实习总结 [大三四八九月实习]
- 多线程执行 [大三四八九月实习]
- [Math] 排列组合 笔记 [大三四八九月实习]
- 排列组合应用于计数的思路 [大三四八九月实习]
- ACE结构和功能 [大三四八九月实习]
- 搭乘地铁|轻轨规律(^-^) [大三四八九月实习]
- C++ STL 容器 迭代器 算法 [大三四八九月实习]
- malloc/free和new/delete [大三四八九月实习]
- XML文件的基本结构 [大三四八九月实习]
- TinyXML读取XML文件内容 [大三四八九月实习]
- TinyXML读取XML文件 [大三四八九月实习]
- ACE在windows下的编译及配置(VS2010) [大三四八九月实习]
- BOOST 在windows的编译及配置(VS2010) [大三四八九月实习]
- BOOST timer库应用[timer库1] [大三四八九月实习]
- boost 库 timer组件的源码分析 [大三四八九月实习]
- 排列组合中不需要考虑组合数的情形 [大三四八九月实习]
- 二进制、十进制以及十六进制之间的相互转换
- poj1005
- NSDate常用代码范例
- 计算几何 模板
- poj1006
- 实习中的一总结 [大三四八九月实习]
- Struts2 学习笔记20 类型转换part2 写自己的转换器
- Android小项目之三 splash界面
- C++文件读写详解(ofstream,ifstream,fstream)
- 模型-视图-控制器
- 表达式转换成二叉树以及二叉树的前中后序遍历(递归 非递归 线索树)
- Lync 2010 升级到2013 之安装准备!
- 【求助】sqlplus出现core dump的提示
- 监听电话的呼叫状态