主题:【原创】一分钟了解C++ 的类 -- 橄榄枝
在一次朋友的聚会中,谈到C++的类(Class)。我说一分钟就能讲清楚。现在知道是在说大话了,了解还是有可能。怎么说呢?在学会之前,也曾看过,但怎么都看不明白。就象面对大山一样,可等到明白后发现很容易。
让我们来到山脚。在没有类之前,计算机程序都是在处理各种数据,如数组(Array)装载纯一的同一类的数据;结构(Structure)可以装载不同的数据类型,如整数和字符。
就像一个箱子,里面装了不同的货物。而程序就是操作这些数据的机器或工具。如汽车,吊车,铲车,叉车等等。而后来人们给这个箱子装上了汽车的轮子,装上了吊车的吊臂,甚至装上了加工设备来加工箱子里的东西。
再发展就出现了标准的箱子,即各种集装箱。还有标准的地址用来寻找到集装箱等,这就是标准模板类(Standard Template Library, STL)的出现。还有标准的吊车,装卸工具的出现,即generic function等。
人们给结构(Stucture)即数据本身加上机械工具(Function)后,另起了一个名字就类(Class)。其实现在的结构和类是一样的。但人们用C++用的是类,而只用结构原来的功能。有了类以后,继承,子类能功能就自然衍生出来了。
其实到具体如何用还有有一定距离。这一分钟是讲不清楚的。推荐一本书
按照上面的例子改一改,就很容易上手了。书的名字是《标准C++宝典》英文是 Standard C++ bible, 由Al Stevens和Clayton Walnum合著。
看见“宝典”俩字就想乐,怎么看怎么觉得有“葵花”的味道。当时各种Bible还不少,有些用处。
不过是属于大全之类的参考书,学的话比较繁杂。
从头学习c++的话,清华还是什么谭浩强还是谁的c++什么什么的对语法就足够了。C++标准库需要在了解了c++的语法后另看。
至于面向对象的思想和方法推荐那本《design pattern》,不过这本书类似参考书。可以先看explained design pattern。
structure和class两个key word的区别,我记得在g++处理的时候,structure实际上就是一个默认全部public的class,也就是说支持封装函数,能不能继承和多态我记不清了。而c中的structure是不支持封装函数的。
C++ 这两个加号可不是百来的~~~
成员函数及变量的缺省属性。
其他没有什么区别。
看完后对c++ template的认识会升华到一个很高的层次;-)
没用过c++编程,感觉从基础c到c++还是有些难度的。主要是从顺序编程到面向对象,思维有点转变困难。但是用origin的时候,赶鸭子上架,用过里边的c语言的类,最大的感触是:眼花缭乱。想实现一个功能,找不到需要的类,看软件带的程序使用的一些类在帮助文档里没有,即使有,从一大推类里边找自己想要的,也非常费劲。不知道程序员们编程,是不是也要这么费劲,还是有妙招。
我们现在做java开发,介绍一下gp编程,让他们换换脑子,呵呵。
02年的时候,看到这本<The C++ Programming Language> 顿时精为天书,研读终年,走到哪儿都带着这本书。跟着我从武汉到南京再到成都,最后回到杭州。
虽然这几年改行做java了,可是有空时候,还是拿出来翻翻,换换脑子。
习惯了procedure programming对于什么都用对象来考虑是会不习惯的。
c没有类的概念
你是没找到能拿来就直接用的类,说明你对整个库还不熟。
软件本身肯定也用了自己库,不过人家有内部关系,有些类不一定公开。多看提供的例子来了解可用的类和函数
去origin 应聘也行,哈哈。
当然origin里的c是c++,所以有类,不过名字叫originC,不叫originC++。
不过我一直认为,有C++编程基础的人来用origin会更得心应手。
不过借此我能稍微明白了类这一个概念,也算是有所收益了。
普通编程人员对哪些库需要很熟呢?其来源是帮助文档?
基本上这些软件都提供丰富的例子来教你,写个小程序抄抄改改就行了,上手应该不难的。
看你做什么方面的事情了,一般来讲,任何大项目都会有相应的开发人员写的文档,先读编文档是比较好的习惯,有问题的话论坛和邮件列表则是最好的助手,我个人更偏好mailing list。当然有些项目缺乏丰富的示例,这个时候只能考虑和开发人员联系,他们一定清楚该怎么办。
不好意思麻烦开发人员老人家啊,哈哈
俺是应用软件的,只是自己写点代码扩展一下功能而已。
做开发的话,应该是很欢迎用户和自己交流的吧。打算以后有空了,学学编程,自己搞个小软件玩玩。
只是个人觉得这本不适合做C++的启蒙教程。做为入门后的书的确是不二之选。
其实大部分C++都有一个通病,就是把面相对象技术作为书的一大部分。其实完全可以把两者分开,只是面相对象是C++与C的主要区别,通常都免不了。The C++ programming language好的地方之一就是它集中精力讲C++语言本身,而非面相对象思想。不象Thinking in C++和Thinking in Java,两本的前半部分就基本没有什么区别嘛,真讲语言部分又太过泛泛。