学习型博客与其说是给别人看,不如说是给自己一个机会把知识梳理清楚---- 优快云 C++博客 刘未鹏
以前听人说:C++只是C语言加上类而已。深入学习后才发现其实不然,对于现代C++而言,已经不能这么描述了,也逐渐明白了为什么C++之父一直在呼吁 要把C++当做一种全新的语言来学习。从上个学期末开始看《C++ Primer》到现在已经近一百天了,书也看了超过400页,现在正在进行第十三章《复制控制》,趁机把一些心得记录一下。
1 面向对象思想:毫无疑问这个是C++的精髓。我觉得应该描述为,一切皆是对象。无论我们平时用到的int,string,bool类型,还是容器类型 vector,pair,map从本质上来说都是类。比如我们做最简单的两个int类型相加操作,应该是调用了int类的一个成员函数,至于做两个 string类型的相加,应该也是同样调用string类成员函数,至于其中的“+”,应该是做了一个操作符重载,这个是凭感觉猜的,还没有做深入确定。 也就是说,在我们在进行所有操作都是在类的基础上进行的。这个应该可以解释成为一切皆是对象。
2 一直不喜欢C语言里的数组,使用起来非常的不方便。每次必须定义数组的大小,当对于将要装进数组的元素数目不确定的时候就比较头疼了,更恐怖的是一旦数组 空间不够用的时候,就要重新建立一个新的数组,再将原来的数组装进去。C++里的vector,list等容器就比较好用了,每次添加元素都会比较容易。 关联容器也相当容易,上次有个老师说用实现手机通信录的功能,我第一时间就想到了用关联容器。曾经尝试过一次,没有用多少代码就很容易实现了。曾经觉得 vector跟数据结构中的队列比较像,结果被老哥给否决了,目前还是不是太清楚其中的所以然。
3 泛型算法 现代C++一个很重要的贡献是创建和发展了标准库,标准库包括容器和算法库。泛型算法有一组形参规范,熟悉了这些规范后,就可以基本上不用花费太多精力在 形参和算法的关系上,专注于算法的实现操作上,只是算法不能直接改变它所操纵的序列大小,比如随意添加和删除元素。不过好一阵子没有看那个部分,好像又忘 了。
4 学习C++比较麻烦的事情是细节太多,有时候不知道精力该如何分配,虽然现代C++一直试图提高C++程序员的编程效率,但是想成为一个比较优秀的C++ 程序员还是要对底层的细节比较了解。比如不能函数中不能返回局部变量的引用,因为随着函数执行结束,局部变量的内存要随之释放,当然不能返回引用;当类的 成员初始化,可以直接初始化,也可以使用复制初始化,而复制初始化实际上需要先调用构造函数使用形参构造一个临时变量,然后调用复制构造函数把临时变量的 副本赋给左操作数;还有关于const 类型的指针,和const类型的迭代器,const类型的引用,到现在还是一直混淆着。据说成为一个优秀的C++程序员一般还是需要3-5年的时间,不知 道是不是要花时间在这些细节上。
5 这个是在编程方面了。虽然到现在为止,完全自己写的程序最多才三十来行,而且费了好大劲,但是感觉要是编写一个比较的的程序,可以先不考虑具体实现的细 节。先写主要功能,用伪代码或者汉字都可以,把大致的枝干结构写出来后就比较容易了。这样可以避免在具体编写过程中太过混乱。其实细节实现应该花不了太多 的时间,如果没有个全盘的规划,估计就很难继续了,很容易顾此失彼。软件工程中说是容易陷入泥潭,应该跟这个一个道理,如果早期没有做细致的需求分析和架 构设计,软件工程就容易失败。当然这个是我猜的。
6 指针是学习C++的人所头疼的东西,目前还没有遇到太大的麻烦,不知道是不是学习的太浅了。
目前发现身边学习C++的好像没几个,怪孤独的。 第一次写学习日志,有不对的地方欢迎指正。
查了一下,准确来说int算是结构,不过算是跟类差不多了吧?C++代码是 [SerializableAttribute] [ComVisibleAttribute(true)] public value class Int32 : IComparable, IFormattable, IConvertible, IComparable , IEquatable 还是看不懂,求大神解释