C++学习 -- 重载和缺省参数
来源:互联网 发布:mac框架 编辑:程序博客网 时间:2024/05/01 13:02
重载和缺省参数
什么是重载?
重载简单来说就是依次多义。所谓函数重载是指同一个函数名可以对应着多个函数的实现
为什么要重载?
主要是两个原因:
1. 不想使用printf_int(), printf_char(), printf_float() 来打印不同数据类型的字符。类似这样的问题,可以使用重载来解决。
2. 构造函数
因为构造函数的名字预先由类的名字确定,所以只能有一个构造函数名。但如果我们想用几种方法来创建一个对象时该怎么办呢?例如创建一个类,它可以用标准的方法初始化,也可以从文件中读取信息来初始化,我们就需要两个构造函数,一个不带参数(缺省构造函数),另一个带一个字符串作为参数,
以表示用于初始化对象的文件的名字。所以函数重载的本质就是允许函数同名。在这种情况下,构造函数是以不同的参数类型被调用的。
重载的实质?
其实是在编译的时候,函数名会被转换成如下的格式进行匹配:printf(int int)=>prinf_int()
为什么不用返回值重载?
因为使用者可以不处理返回值,如下
void f()和int f()两个函数,使用者在调用的时候可以直接写成
f(),如果使用返回值重载,那么编译器将不知道该使用那个函数。
缺省参数为什么只能发在后面?
F(int i, int j, int k=1, int l=0) 为什么缺省参数要放在后面?
例如: f(int i, int j=0, int k, int l =0)不能处理 f(3, 4, 5),编译器无法判断哪个数缺省参数。
缺省参数只在说明的时候指出,定义处不重新定义,但通常要加一个注释.
问个小问题,在一个类中有下面两个函数
void add(int i=1) {cout << add(int i=1)<< endl;};
void add() {cout << add()<< endl;};
当使用add()时,会调用那一个?
结论是编译不能通过。
- C++学习 -- 重载和缺省参数
- 函数重载和缺省参数
- C++缺省参数和函数重载
- 内联,重载,缺省参数
- 【从C到C++学习笔记】内联成员函数/成员函数重载及缺省参数
- C++【函数(重载/缺省参数/哑元/内联)】
- 函数重载与缺省参数
- C++初识之函数重载、缺省参数
- C++ 60分钟入门教程 - 4、C++缺省参数和函数重载
- 北大 C++ 1.7 内联函数、函数重载和函数缺省参数
- 命名空间,输入输出流,重载,缺省参数,引用和指针区别
- 可变参数模拟C++中缺省参数及重载
- 学习C++模板---模板类带简单参数,并且添加缺省参数
- 学习C++模板---模板类带简单参数,并且添加缺省参数,特例模板
- 第5章 函数重载与缺省参数
- C++函数重载与缺省参数的宏观理解
- 一、C++ 内联函数、重载函数、函数的缺省参数
- c++第一节之函数重载与缺省参数
- VC 各种情况下的窗口句柄的获取
- C++学习 -- 构造函数和析构函数
- 类的static函数成员在定义时不用要static
- COM:IUnknown、IClassFactory、IDispatch
- eUML2使用说明
- C++学习 -- 重载和缺省参数
- 线性算法解决数组最大和
- 工作笔记之32BPP
- Flex读取XML的两种方式
- 三种方式实现Flex读取XML配置文件
- windows下MYSQL自动备份批处理
- 如何进行Flex Spring整合
- JavaScript判断浏览器关闭或刷新代码
- (转)SysLog 学习的一点思路