好久好久没有时间学C++了,郁闷,主要是因为最近有考试逼近,不得不看一些其他的书。看那些不能说没有用处,但是实在是不怎么感兴趣的书,也是一种痛苦。今天很晚了,抽出点时间,学了个很有用的东–函数对象,的确很有用。关于操作符重载其实并没有讲完,比如前++,后++,*,[]等等但是都差不多,感觉没有什么好讲的,我个人对这个浅谈系列的定位感觉应该是一些自己的笔记和心得,并不像让它成为百科,因为以前太过于求全,浪费了太多时间,以后碰到想讲的就讲,不想讲的就不为了全而凑数了。回到主题,先看一个我没有讲过的操作符重载(),在一个家伙后面加括号,那不就是函数吗?恩,就让类可以像函数一样调用!呵呵,搞了这么久,类才有点新意。看个没有函数对象的例子先,还是我们的水果,当然为了简单,我把以前那些复杂的东西都删了,就是个简单的水果。
阅读全文....
本来是可以一讲就把重载全部讲完的,因为昨天太晚了,很困,所以就只讲了重载输入输出操作符,今天概念性的东西就不说了,直接看上一讲的《浅谈C++类(8)–重载输入输出操作符》吧,今天就补充一下其他的操作符的重载,其实都差不多,不过我感觉自己实际输入调试过后和没有调试只懂概念有个印象是完全不一样的。我一次把除了下标和成员访问操作符以外的操作符都写在下面这个例子里面,你自己分析和调试吧,我在主程序里面只调试了一部分。
阅读全文....
首先说明,这本来是钱能C++程序设计习题及解答中的一个习题。也就是在自然数范围内求n!,其实用他的方法还不能说在自然树范围内,按他的方法,不考虑机子性能,最多可以算到2^32-1(32位机),原题解答如下:
阅读全文....
其实我们已经用过操作符重载,还记得«和»吗?本来不是移位操作符吗?在C++里面我们已经把他们当作输入输出操作符用过了,我们今天来研究一下重载他们用来输入输出类,先还是用水果来举一个例子。
阅读全文....
本文分享了C++编程中的一个陷阱:使用无符号的size_t类型做递减循环,因其值不会小于零而导致死循环,并分享了修正方法。
阅读全文....
C++ 初始化HasPtr b = a;调用复制构造函数,而非赋值运算符。文章通过代码实例,揭示了这一易混淆点及其导致的内存问题。
阅读全文....
不知不觉我都写了6讲了,的确这样讲出来的学习才能迫使我真的去调试每个书上出现的代码,去想些自己能讲出什么新的书上没有的东西,这才是真的学习吧,以前看完书,做道题式的就以为自己基本都掌握了,在类这里好像行不通,因为我的C基础不适合这里。。。。呵呵不说题外话了。这次讲析构函数,相对于构造函数。析构函数就是在类的声明周期结束的时候运行的函数,一般用来把一个类的资源释放出来的家伙。就我了解,JAVA好像不需要这样的工作,他们有垃圾回收器,我看一个比较理性的程序员评价这种情况是有利有弊,类似的简化让JAVA成为了最佳商业模式开发软件,但是让JAVA程序员太脱离底层,让他们的知识匮乏,因为编JAVA不需要那么多知识,而且让JAVA失去了很多底层应用。另外这样的垃圾回收是耗资源的,当时Bjarne Strooustrup就考虑过也给C++加一个这样的特性,但他又说,作为一个系统开发级及常用来开发驱动程序的语言,他无法接受那样的效率损失。所以最后C++没有加上这个特性。又讲多了,看析构函数吧。
阅读全文....
还记得(1)中讲到的构造函数吗?复习一下,这次我们重载一个新的默认构造函数–即当你不给出初始值时调用的构造函数,我记得我讲过这个概念吧,有吗?看下面的例子。
阅读全文....
呵呵,又来了,自从我开始尝试描述类以来,我发现我自己是开始真的了解类了,虽然还不到就明白什么叫oo的高深境界,起码对于类的使用方法了解的更多了,希望你看了以后也能有所进步啊:)
阅读全文....
C++单参数构造函数能将其他类型隐式转为类对象。文章讲解了此机制及如何用explicit关键字禁用它,以防止误用。
阅读全文....