C++&C&初步开始(2)
来源:互联网 发布:东莞房价知乎 编辑:程序博客网 时间:2024/05/19 17:08
函数重载(Overloaded functions)
// overloaded function#include <iostream.h>int divide (int a, int b) {return (a/b);}float divide (float a, float b) {return (a/b);}int main () {int x=5,y=2;float n=5.0,m=2.0;cout << divide (x,y);cout << "\n";cout << divide (n,m);cout << "\n";return 0;}
在这个例子里,我们用同一个名字定义了两个不同函数,当它们其中一个接受两个整型(int)参数,另一个则接受两个浮点型(float)参数。编译器 (compiler)通过检查传入的参数的类型来确定是哪一个函数被调用。如果调用传入的是两个整数参数,那么是原型定义中有两个整型(int)参量的函数被调用,如果传入的是两个浮点数,那么是原型定义中有两个浮点型(float)参量的函数被调用。
为了简单起见,这里我们用的两个函数的代码相同,但这并不是必须的。你可以让两个函数用同一个名字同时完成完全不同的操作。
(http://www.cnblogs.com/skynet/archive/2010/09/05/1818636.html)
Inline 函数(inline functions)
inline 指令可以被放在函数声明之前,要求该函数必须在被调用的地方以代码形式被编译。这相当于一个宏定义(macro)。它的好处只对短小的函数有效,这种情况下因为避免了调用函数的一些常规操作的时间(overhead),如参数堆栈操作的时间,所以编译结果的运行代码会更快一些。
它的声明形式是:
inline type name ( arguments ... ) { instructions ... }
它的调用和其他的函数调用一样。调用函数的时候并不需要写关键字inline ,只有在函数声明前需要写。
inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。
表达式形式的宏定义一例:
#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))
另外要注意,内联函数一般只会用在函数内容非常简单的时候,这是因为,内联函数的代码会在任何调用它的地方展开,如果函数太复杂,代码膨胀带来的恶果很可能会大于效率的提高带来的益处。内联函数最重要的使用地方是用于类的存取函数。
函数的声明(Declaring functions)
很多程序员建议给所有的函数定义原型。这也是我的建议,特别是在有很多函数或函数很长的情况下。把所有函数的原型定义放在一个地方,可以使我们在决定怎样调用这些函数的时候轻松一些,同时也有助于生成头文件。
- C++&C&初步开始(2)
- C++C&初步开始(1)
- 从头开始学算法:考研机试题练习(C/C++)–算法初步
- C++--开始(一)
- C++--开始(二)
- swig+lua初步(c++)
- 【C转战C++】 (一)开始的开始
- C++(19):STL初步之list初步
- C++(20):STL初步之set初步
- C++(21):STL初步之map初步
- 学生成绩管理系统的初步实现(C)
- C语言程序设计实践(OJ)-数组初步
- C++(17):STL之string初步
- C++(18):STL之vector初步
- Turbo C 程序设计初步
- Linux C 初步(1)
- C bulider计算器初步
- C++Boost 初步了解
- BHuman文档结构
- Perception(0-1.1)
- Perception(1.2)
- Android绘制.9图片新手攻略
- C++C&初步开始(1)
- C++&C&初步开始(2)
- Bootstrap 下拉多选框插件Bootstrap Multiselect
- IPC(中)-进程间通讯方式详解
- IOS文件的管理
- VRMMO的技术挑战
- Linux中SIGPIPE信号说明
- 深入研究Servlet线程安全性问题
- HTTP协议分析系列(六)------php+socket+cookie请求
- 装饰设计模式