sponsored links

函数重载

函数重载(Function overloading),是Ada、C++、C#、D和Java编程语言中具有的一项特性,这项特性允许创建数项名称相同但功能的输入输出类型不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力。


函数重载规律

构造器重载

注意事项

对于名字屏蔽,C++规定不存在跨作用域(scope)的名字重载。即内层作用域的函数名字将屏蔽掉外层作用域的同名函数名字。

C++子类型的成员函数名将屏蔽其基类型的同名成员函数名,即被继承类与派生类的同名成员函数名不构成函数名重载。除非在子类型中用using关键字显式引入基类型的成员函数名。

 class B { public: void f(int i); }; class D : public B { public: using B::f; void f(double d); }; class B { public: void f(int i); }; class D : public B { public: using B::f; void f(double d); }; 

另见

标签: 计算机科学

Python

... 下标为5的元素,且步长为2 函数 Python的函数支持递归、默认参数值、可变参数、闭包,但不支持函数重载。为了增强代码的可读性,可以在函数后书写“文档字符串”(Documentation Strings,或者简称docstrings),用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数 help() 打印出函数的使用帮助。比如 ...

协变与逆变

... > void shuffleArray(T[] a); 也可以强制C#方法只读方式访问一个集合,可以用界面 IEnumerable 代替作为阵列 object[] 。 函数类型 支持一等函数的语言,具有函数类型如“一个函数期望输入一只Cat并返回一只Animal(写为OCaml的 Cat -> Animal 或C#的 Func )。 ... type safe)的: class CatShelter extends AnimalShelter ...

FreeBASIC

... 保持与其前辈一致,FreeBASIC还是遵循了一些现代的标准和编码实现。具有标准的过程特性以及面向对象特性,如对象、运算符重载函数重载和命名空间等等,已经被加入到FreeBASIC中。 FreeBASIC的行在遇到行尾字符或冒号时结束。因此不需要使用特殊字符 ... 写入一行文本的程序可以写成如下的简单语句: Print"Hello, World!" Sleep 而且也加入一些面向对象的性质,例如动态连接库,运算符重载,以下是面向对象的例子 ...

new (C++)

... ()的函数重载 使用new动态生成一个对象,实际上是调用了new运算符表达式。该运算符首先调用了operator new函数动态分配内存,然后调用类型的构造函数初始化这块内存。new运算符是不能被重载的,但是下述各种operator new()函数既可以作为全局函数重载,也可以作为类成员函数或作用域内的函数重载,即由编程者指定如何获取内存。 void* ope ...

惰性求值

... (+) fibs (tail fibs) 在Haskell语法中," : "向列表头部添加一个元素, tail 返回去掉第一个元素的一个列表,而 zipWith 使用指定的函数(这里是加法)来组合两个列表的对应元素生成第三个列表。 假定编程者是仔细的,只有生成特定结果 ... 必须求出的,很多结果值并没有被用到。因此,C++中实现延迟求值也是现实需求。一般把运算符函数函数重载,返回一个对象保存了计算所需的各种信息(如实参)等。例如,对矩阵加 ...

名字修饰

... 不同的命名空间(典型的命名空间是由一个模块、一个类或显式的namespace指示来定义的)或者有不同的签名(例如函数重载)。 任何由编译器产生的目标代码通常与另一部分的目标代码(产生于同一款或不同款的编译器)通过链接器 ... Pascal/Delphi的名字修饰 为了避免Pascal的名字修饰,可以使用: exports myFunc name 'myFunc', myProc name 'myProc'; Free Pascal的名字修饰 Free Pascal支 ...

特设多态

... (ad hoc polymorphism)是程序设计语言的一种多态,多态函数有多个不同的实现,依赖于其实参而调用相应版本的函数。因此,特设多态仅支持有限数量的不同类型。也称作函数重载或运算符重载。 特定多态的名字来源于其发明人克里斯托弗·斯特雷奇于1967 ... 全特化来说,是针对特定情况,直接给出专门的实现(可以与普通的模板具有完全不同的内容),本质上与函数重载没有区别,符合特设多态的概念。 早绑 ...

tgmath.h

... tgmath.h 是C标准函数库中的头文件,提供了数学函数的类型通用的宏定义。使用这些宏调用数学函数时,会根据参数自动对应到类型适合的数学函数,其效果类似于C++的函数重载,使得编程者不必繁琐地去调用数学库函数的单精度、双精度、长双精度、单精度复数、双精度复数、长双精度复数等各个版本。 宏定义 math.h与complex.h共有 一些常见数学函数既在 math.h 有 ...

右值引用

... 的来源。 与传统的拷贝赋值运算符(copy assignment)成员函数、拷贝构造(copy ctor)成员函数对应,移动语义需要有移动赋值(move assignment)成员函数、移动构造(move ctor)成员函数的实现机制。可以通过函数重载来确定是调用拷贝语义还是移动语义的实现。 右 ... 内容的权限,这些操作与左值绑定完全一样。右值绑定与左值绑定的分野在于确定函数重载时的 ...