找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2576|回复: 0
打印 上一主题 下一主题
收起左侧

VI C++第四部分面向对象与泛型编程

[复制链接]
跳转到指定楼层
楼主
ID:60076 发表于 2014-4-29 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     C/C++终于告一段落了,语言层结束,自然就开始工具层,所以我决定接下来把主要目标转向Linux C和数据库Oracle/SQL了,虽然之前接触了一些,但认识的都比较浅,没把精力放在这两个工具上,用的也很少,就像没用过,比如Linux系统的动态库、多线程、文件操作、内存管理、信号通信等等,Oracle的数据的查询、创建、更改、删除、处理各种数据等等。至于说数据结构只好再缓缓,熟练的操作顺序表就行了,以后再研究树形结构和图结构的代码。
       至于说C++最后的第四部分面向对象编程和泛型编程可以说是压轴戏,前面所有的知识点都是为它们打基础,第一部分的数据类型、基本语法、数组、函数、指针、结构体讲的是比较基础的部分,虽然内容比较多,但如果是会了C之后就能够很快上手,尽管语法还是有些区别,多添加了一些东西,除了函数的重载、io流、命名空间、引用,内存分配的关键字,其他基本一样,第一部分之后接下来是第二部分,容器与算法,记得当时学这个我记得好纠结。可以说是基础模板STL为泛型编程打基础,话说有了它就相当于高级语言java那样不需要用指针,直接调用各种官方封装好的模板函数,既然像高级语言,操作也就不需要再去写底层的东西了,管你是用快速、插入、冒泡排序,一个sort就可以让容器所有数值从小到大排好,数据结构也不需要再去写了,容器list就是链表,deque就是队列,stack就是堆栈。这样就能够直接拿来用了,迭代器替换了指针,容器替换了数组,也不需要操作内存了,这一点无疑和java相似。也因此C++有STL的关系可以当高级语言用,也可以当低级语言用,虽然官方说过数组和指针尽量少用,而容器和迭代器多用,不过个人喜欢怎么用那就怎么用吧。再就是由于C++完全兼容C,因此C++用纯C语法写那是完全可以的。第三部分的类与数据抽象描述了类的使用,如何封装一个类,如何写一个类的各种成员函数,使用一个类,并定义公共成员、保护成员和私有成员。
       最后到第四部分就开始汇总了,也就是最终Boss,两个分支,一个面向对象编程,一个泛型编程。
       面向对象编程就开始同时操作几个类,几个类的关系就像人和人之间的关系一样,要么就是上下级关系,要么就是同级关系,要么就没有关系。因此上下级关系就像父类和子类,也称基类和派生类,和生活中父亲的遗产给儿子一样,父类的东西通过继承来给子类的,不过三种继承方式用的最多的还是公共继承,因为这样就不会改变成员的属性,能够安全的一代代的传承下去。水往下流,儿子可以用老爸,甚至爷爷的东西,程序也一样,子类能够父类的东西,反过来却不行了。同级关系出现的就是类的类,也就是类的嵌套,看他们做项目的时候有的时候出现了7层嵌套,我了个去,只是指一个类成员变量就要写成one -> two -> three -> four -> five -> six -> seven,看的我都郁闷了,有点像看多级指针的味道,没事做干嘛要写到4级甚至更高级,4级是3级的地址,3级是2级的地址,2级是1级的地址,1级是变量的地址。。。。。。本来嵌套多了就不是好事。由于上下级关系和同级关系不可能只是一对一,有时是一对多的关系,这样更加复杂了,有的人有很多兄弟也有很多儿子,想想就很复杂,程序于是就因此产生了多态,也就是同一个名字,但是在不同的类中名字虽然相同但它们本质却不同,于是就产生了虚函数和虚基类,可以很好的控制它们,用起来也很方便,也不需要用命名空间的方法来区别这些名字一样的家伙,这样很是纠结,一个虚基类就很好的搞定了。
       泛型编程也就是高级STL部分,不同于面向对象,它也有它的独特方法和算法来解决很多事情,这就是泛型编程,也就是说同一种程序可以用C语言体系实现,也可以用C++的面向对象体系来实现,当然也能够用STL体系实现,所以现在方法更多了,不过如果说同一种程序,最简单的还是数STL模板,虽然刚开始觉得模板挺复杂的,但用多了自然也习惯了比如一个容器的容器定义一个迭代器还是前期看来还是比较纠结的,比如一个向量容器的映射关联容器的迭代器:vector<map<int,string> >::iterator iter;,不过呢最复杂的还是纯C,刚接触认为C语言最简单,但其实完全学好纯C还是不容易啊,比如纯C实现面向对象功能就不是那么好写了,再比如纯C写关联容器并且封装里面的各种操作,那这。。。。。。从语言层面来讲也是的,在编译的时候STL首先转换成C++,然后C++转换成C,最后C转换成汇编的机器语言,因此在运行程序的时候是从高级往低级转换的,越低级的语言难度也就越大的说。所以呢汇编语言我可是没有信心学好的,以后也不会打算研究它,如果有必要顶多再去学学java、PHP、C#了。
       好了关于C++到此为止吧,如果继续下去的话不知道要到什么时候了,这玩意没有最精,只有更精通的,目前能够按照自己的思路写各种基本代码就ok了,剩下的以后再说,接着要把精力放在工具上了,数据库、Linux C (UC)、window32、MFC下半年的任务啊平均下来一个科目主攻俩月。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表