运算符重载

在一些情况下,会想将两个对象进行 +、-、*、/ 运算,例如在定义了有理数类之后,若能透过 +、-、*、/ 之类的运算来处理,代码编写上会比较直觉,在 C++ 中,可以透过重载运算符来达到目的。 .........

嵌套、局部、匿名类

在类中可以再定义类,称为嵌套类或内部类,应用的场景之一是实现 IntLinkedList 时,内部节点可用 IntNode 来定义: #include <iostream> usi.........

static 成员

对于基于相同类产生的实例而言,会拥有各自的值域数据,不过有些数据不用实例各自拥有一份,而可以属于类,例如可以定义 Math 类,它提供了 PI 成员,因为 PI 是个常数,不需要个别实例拥有各自.........

const 与 mutable

如果在创建 string 实例时指定 const,那表示不能变动该实例的状态,如果试图改变该实例状态,或者调用了会变动实例状态的方法,编译时会发生错误: const string text =......

构造函数

在〈定义类〉中谈过,如果没有定义任何构造函数,编译器会自动产生没有参数的默认构造函数,那么默认构造函数做了什么呢?如果就以下的类来说: class Account { public: str.........

定义类

有些数据会有相关性,相关联的数据组织在一起,对于数据本身的可用性或者是代码的可读性,都会有所帮助,例如,在程序中你可能发现,在进行帐户之类的处理时,帐号、名称、余额这三个数据总是一并出现的,这时可以.........

高阶函数

在〈一级函数与 algorithm〉,看了几个 algorithm 的函数可以接受函数的例子,既然如此,函数也可以返回函数,这边的指的函数传递,包括了函数指针、lambda 表达式。 从函数中返回函数.........

一级函数与 algorithm

在一些语言中,若函数可以传递,该语言中会称其一级函数(first-class function),就这点而言,C++ 早就具备,不过有些开发者认为,应该要包含可以创建匿名函数的能力,在语言才称具有一级.........

lambda 表达式

C++ 11 可以使用 lambda 表达式,可以在函数中封装一段演算流程进行传递,例如,在〈函数指针〉的范例中,定义了 ascending、descending 函数以便传递,如果事先这两个函数并不.........

函数指针

程序在执行时,函数在内存中也占有一个空间,将函数名称作为指定来源时,函数名称会自动转为指针,类型由返回值类型与参数列决定,若要将之指定给另一函数指针,类型的定义方式如下: 返回值类型 (*名称)(参.........

尾端返回类型

来看看另一个函数模版的例子: #include <iostream> #include <vector> using namespace std; template <.........

可变参数模版

如果实参的个数无法事先确定,而且实参的类型可能各不相同,C++ 11 以后可以透过可变参数模版(variadic template)来解决。 #include <iostream> us.........