内联模板 – C++快速入门46

内联模板让编程改变世界Change the world by program内联函数内联即inline,可能很多鱼油虽然听过这个词儿但却不是太熟悉,因为平时用之甚少?!我们第一想到的是内联函数,引入内联函数的目的是为了解决程序中函数调用的效率问题。内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。编译时,类似宏替换,使用函数体替换调用处的函数名

函数模板 – C++快速入门44

函数模板让编程改变世界Change the world by program基本的模板语法到目前为止,我们已经介绍了两种C++程序设计范型,即:按照面向过程式范型把程序划分成不同的函数。按照面向对象式范型把代码和数据组织成各种各样的类并建立类之间的继承关系。在这一讲里,小甲鱼将给大家介绍另一种范型:泛型编程!范型编程技术支持程序员创建函数和类的蓝图(即模板,

命名空间和模块化编程3 – C++快速入门41

命名空间和模块化编程3让编程改变世界Change the world by program命名空间地球人都知道,创建的每一个类、函数和变量都只能在一定的区域内使用。而我们所知道最大的区域是全局作用域,最小的区域是一个代码块,例如:{int a = 20;}// a在此处已经不存在随着程序变得越来越复杂,全局作用域里的东西会越来越多,尤其是在使用外部函数库时

链接和作用域 – C++快速入门42

链接和作用域让编程改变世界Change the world by program链接和作用域前边我们已经开始创建由多个文件构成的项目,是时候再来讨论下更复杂的变量作用域了。简单的理解,变量的作用域就是你可以在什么范围内访问这个变量。地球人都知道,一个在任何函数之前定义的变量可以在任何一个函数里使用(这是一个全局变量),而在某个函数里定义的变量只能在那一个函数里使

命名空间和模块化编程2 – C++快速入门40

命名空间和模块化编程2让编程改变世界Change the world by program使用头文件在创建了头文件之后,只要把它的文件名用双引号括起来写在如下所示的指令里就可以导入它:include “fishc.h”如果没有给出路径名,编译器将到当前子目录以及当前开发环境中的其他逻辑子目录里去寻找头文件。为了消除这种猜测,在导入自己的头文件时可以使用相对路径

命名空间和模块化编程 – C++快速入门39

命名空间和模块化编程让编程改变世界Change the world by program命名空间和模块化编程接下来我们将重点讨论两个相互关联的简单概念:第一个概念是模块化(modularization)把程序划分成多个组成部分(即所谓的“模块”)这是通过把程序代码分散到多个文件里,等编译程序时再把那些文件重新组合在一起实现的。第二个概念是命名空间(names

避免内存泄漏 – C++快速入门38

避免内存泄漏让编程改变世界Change the world by program避免内存泄漏这个话题就像古时候女人的裹脚布,又长又臭哈~前面我们讲过,分配了一个内存块但忘记了释放它,这是一种严重的错误。这样的内存块将等到程序执行结束时才会被释放掉。如果程序会运行很长时间(例如在服务器上,注意不是所有的操作系统都想windows一样每天都要重启哈)并且在不停地申请

高级强制类型转换 – C++快速入门37

高级强制类型转换让编程改变世界Change the world by program静态对象强制类型转换大家还记得我们前阵子制造出一个苹果公司么?没错,这节课我们还继续对这家公司入手进行讲解!为了演示方便,小甲鱼小小的做了一些修改,尽管这样的修改有些许问题,但是,作为今日内容的讲解还是甚好滴:Example.cpp(源代码下载)要点总结我们用传统的强制类型转换

动态数组 – C++快速入门34

动态数组让编程改变世界Change the world by program动态数组虽然,前边我们讲过的用 new 给基本类型和对象在运行时分配内存,但它们的尺寸在编译时就已经确定下来。因为我们为之申请内存的数据类型在程序里有明确的定义,有明确的单位长度!可是,总有些时候,必须要等到程序运行时才能确定需要申请多少内存,甚至还需要根据程序的运行情况追加申请更多的内

从函数或方法返回内存 – C++快速入门35

从函数或方法返回内存让编程改变世界Change the world by program从函数或方法返回内存动态内存的另一个常见用途是让函数申请并返回一个指向内存块的指针。掌握这个技巧很重要,尤其是在你打算使用由别人编写的库文件时。如果不知道这个技巧,就只能让函数返回一个简单的标量值,如整型、浮点型或字符型。换句话说,它既不能返回一个以上的值,也不能返回数组之类

动态内存管理 – C++快速入门33

动态内存管理让编程改变世界Change the world by program动态内存管理到目前为止不了,小甲鱼给大家所讲解的每一个示例程序在完成它的任务时所使用的内存空间都是固定不变的。这个固定不变的内存空间其不实是在编写程序时候就可以知道和确定(一般以变量的形式)。这些程序都不能再程序运行期间动态增加或减少内存空间。但小时候,性感而卡哇伊的物理老师告诉我

assert函数和捕获异常 – C++快速入门32

assert函数和捕获异常让编程改变世界Change the world by programassert函数嗯嗯,C语言和C++都有一个专为调试而准备的工具函数,就是 assert()函数。这个函数是在C语言的 assert.h 库文件里定义的,所以包含到C++程序里我们用以下语句:# includeassert()函数需要有一个参数,它将测试这个输入参数的真

错误处理和调试2 – C++快速入门31

错误处理和调试2让编程改变世界Change the world by program让函数返回错误代码这种方式我们已经了然于心,但我们仍有进一步继续讨论的必要。不知道大家还记不记得很久很久以前,我们一起写过的那个求阶乘的栗子:factorial.cpp其实这个栗子充满隐患,为什么?我们输入13,从表面上看,程序既没有崩溃也没有报告出错,但它已经不正常了!我们

虚继承 – C++快速入门29

虚继承让编程改变世界Change the world by program虚继承前一节的 student 示例程序看起来似乎已经解决了问题,但它存在着一些隐患。首先,在 TeachingStudent 类的 introduce() 方法里,我们不得不明确地告诉编译器应该使用哪一个属性。这对于 classes 属性来说是应该的,因为教一门课和上一门课有着本质的区别

错误处理和调试 – C++快速入门30

错误处理和调试让编程改变世界Change the world by program调试技巧正如预告所述,要想掌握调试技巧,最有效的学习方法是反复地尝试、犯错误、纠正错误,然后再尝试、再犯错、再纠正。。。。。。各位女鱼油,小甲鱼有话要说:”介个有时候啊,男孩子犯错是会的啦,咱要宽容,要大度,要认为他是再追求让自己变得更完美!”我们与C++打交道越多,就会越熟悉常见

多继承 – C++快速入门28

多继承让编程改变世界Change the world by program多继承多继承(multiple inheritance)可能是面向对象编程技术中最惹人争议的功能了。这个概念乍看起来很简单,但它可能引起一些难以预料的后果。因此,JAVA 和 C# 等面向对象编程语言大都只支持多继承的最简单的版本。但鱼油们稍安勿躁,只要办法得当,只要心中默念小甲鱼我爱你

重载 – C++快速入门27

重载让编程改变世界Change the world by program重载回头再我们之前的 rational.cpp,你满意了吗?反正我是觉得那些代码的可读性仍然欠佳:main 函数里边要多次调用 print 方法才能实现分数打印,酱紫不行!小甲鱼这节课教大家如何通过重载其实,你或许知道,或许不知道,小甲鱼其实是帅哥。。。。。。从第一次输出值开始,例如:

运算符重载 – C++快速入门25

运算符重载让编程改变世界Change the world by program运算符重载所谓重载,就是重新赋予新的含义。函数重载是对一个已有的函数赋予新的含义,使之实现新功能。其实运算符也可以重载,实际上,我们常常在不知不觉之中使用了运算符重载。运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就

运算符重载2 – C++快速入门26

运算符重载2让编程改变世界Change the world by program课后作业讲解重载运算符 ”+”, ”-”, ”*”, ”/” 实现有理数的加减乘除运算。如 1/8 + 7/8 = 1如 1/8 – 7/8 = -6/8如 1/8 * 7/8 = 7/64如 1/8 / 7/8 = 1/7参考源代码: rational.cpp(源代码及课件下

虚方法 – C++快速入门23

虚方法让编程改变世界Change the world by program虚方法虚方法(virsual method)挺起来玄乎其玄,向从未听说过这个概念的人解释清楚是一件相当困难的事情。因为这是一个很不容易理解的概念,但它在比较抽象的代码里边是不可少的。那么既然用枯燥的文字来描述虚方法不可行,小甲鱼毅然选择走另一条路:通过一个简单的例子引发的问题来探究虚方法的