模版与参考

在〈函数模版〉的最后,创建了 printAll 模版函数: template <typename T> void printAll(T &arr) { for(auto el.........

函数模版

经常地,你会编写相同演算流程的函数,虽然参数类型不同,然而对象的协定相同: bool greaterThan(int a, int b) { return a > b; } bool .........

不定长度实参

如果函数想要能接受不定长度的实参(Variable-length argument),基本上可以使用 vector 定义参数,而调用方使用 vector 收集实参后,再来调用函数,例如: #inclu.........

返回值类型

在定义函数时,必须定义返回值类型,如果函数不返回值,使用 void 表示不返回任何数值;若定义了返回值类型不为 void,函数最后要使用 return 返回数值,否则编译器失败。 返回值与函数定义的传.........

实参与参数

在许多 C++ 文件中都会谈到,调用函数时会有传值(Pass by value)、传参(Pass by reference)之别,不过这两个名词并没有严谨的定义,后续有些语言在讨论函数调用实参与参数之.........

rvalue 参考

〈参考〉中谈到,参考是对象的别名,在 C++ 中,「对象」这个名词,不单只是指类的实例,而是指内存中的一块数据,那么可以参考字面常量吗?常量无法使用 & 取址,例如无法 &10,因.........

参考

参考(Reference)是对象的别名(Alias),也就是替代名称,对参考名称访问时该有什么行为,都参考了来源对象该有的行为,在 C++ 中,「对象」这个名词,不单只是指类的实例,而是指内存中的.........

递归

递归(Recursion)是在函数中调用自身,调用者会先置入内存栈,被调用者执行完后,再从栈取出被置入的函数继续执行。栈(Stack)是一种「先进后出」的数据结构,就好比将书本置入箱中,最先放.........

变量范围

在 C++ 中,谈到变量范围(scope)涉及许多层次,可以谈到很复杂,这边先谈谈全局变量(Global variable)、局部变量(Local variable)与区块变量(Block varia.........

重载函数

C++ 支持函数重载(Overload),为类似功能的函数提供了统一名称,然而根据参数列个数或类型的不同,由编译器选择要调用的函数,函数重载令开发者在设计函数名称可以简便一些。 例如,依参数列个数的不.........

默认实参

C++ 可以使用默认实参,要在一开始的函数原型定义中定义默认实参,函数实现时无需再定义,来看个实际例子: #include <iostream> using namespace std;.........

inline 与 constexpr 函数

在调用函数时会有额外的资源负担,一些小函数,可以「建议」编译器设为 inline 内联,若建议被采纳,该函数会自动在调用点展现为代码,因为编译器需要其实现才能展开函数调用,inline 函数通常直接.........