深入了解VC++的重载函数
2017-06-24 00:00
127 查看
重载函数是函数的一种特殊情况,重载函数常用来实现功能类似而所处理的数据类型不同的问题。重载函数(over loaded function)是C++支持的一种特殊函数,今天小编就带大家深入了解VC++的重载函数。
VC++的重载函数
一般情况下,大家都应该希望在构造pt这一个对象的同一时间,传递y以及X这两个坐标的值把。那么这样的话,我们就可以再定义多一个构造函数了。为了大家可以更加深入的理解,大家可以参考下面的示范例子哟。具体的程序代码,如下图:
大家有没有观察到,在这一个应用程序中,有多少个构造函数呢?没错,答案就是两个。而且这两个构造函数的函数名是相同的,仅仅只是参数的个数以及类型不相同而已。那么其实这样子在C语言中是并不允许的,然而在C++中上面的定义是合理合法的,那么这就是我们今天所要学习的C++中函数的重载(即overload)。当我们在执行main函数里面的pointpt(5,5)这一条语句的时候,C++编译器就会根据参数的个数以及参数的类型来确定一下究竟执行哪一个构造函数先。那么在这里的话,我们就要执行一下point(inta,intb)这一个函数的。
现在小编再来为大家介绍一下,构成重载函数需要哪些条件吧?具体需要的条件如下:函数的参数类型、参数个数不一样。只有满足以上的条件,才可以真正的构成函数的重载。那么现在我们就来练习一下,尝试着分析下面的两种情况吧,看一看这两种情况是不是可以构成函数的重载?
第一种情况:
①void output(inta);
②void output(inta,intb=5);
第二种情况:
①int output();
②void output();
对于第一种情况的话,当我们在应用程序里面调用output(5)的时候,首先应该调用的究竟是哪一个函数呢?那么调用(2)的函数是否可以呢?答案是:当然可以啦。因为(2)的函数第二个参数是拥有一个默认值的。那么在这里就可以认为是调用的是第二个函数了;当然啦,我们在这里也是可以调用(1)的函数。但是我们在这里要注意一点,那就是因为调用是有歧义的,所以这一种情况也是不可以构成函数的重载。在函数重载的时候,我们注意要注意一点,那就是函数带有默认参数的这一种情况。
那么现在我们就来讨论一下第二种情况吧。当我们在应用程序中调用output()函数的时候,大家有没有想过应该是调用的是哪一个函数的呢?在这里,我们要注意咯。那就是只有函数的返回类型不一样,这是不可以构成函数的重载的。经过上面的一番讨论,对于VC++的重载函数你都理解了吗?
VC++的重载函数
一般情况下,大家都应该希望在构造pt这一个对象的同一时间,传递y以及X这两个坐标的值把。那么这样的话,我们就可以再定义多一个构造函数了。为了大家可以更加深入的理解,大家可以参考下面的示范例子哟。具体的程序代码,如下图:
大家有没有观察到,在这一个应用程序中,有多少个构造函数呢?没错,答案就是两个。而且这两个构造函数的函数名是相同的,仅仅只是参数的个数以及类型不相同而已。那么其实这样子在C语言中是并不允许的,然而在C++中上面的定义是合理合法的,那么这就是我们今天所要学习的C++中函数的重载(即overload)。当我们在执行main函数里面的pointpt(5,5)这一条语句的时候,C++编译器就会根据参数的个数以及参数的类型来确定一下究竟执行哪一个构造函数先。那么在这里的话,我们就要执行一下point(inta,intb)这一个函数的。
现在小编再来为大家介绍一下,构成重载函数需要哪些条件吧?具体需要的条件如下:函数的参数类型、参数个数不一样。只有满足以上的条件,才可以真正的构成函数的重载。那么现在我们就来练习一下,尝试着分析下面的两种情况吧,看一看这两种情况是不是可以构成函数的重载?
第一种情况:
①void output(inta);
②void output(inta,intb=5);
第二种情况:
①int output();
②void output();
对于第一种情况的话,当我们在应用程序里面调用output(5)的时候,首先应该调用的究竟是哪一个函数呢?那么调用(2)的函数是否可以呢?答案是:当然可以啦。因为(2)的函数第二个参数是拥有一个默认值的。那么在这里就可以认为是调用的是第二个函数了;当然啦,我们在这里也是可以调用(1)的函数。但是我们在这里要注意一点,那就是因为调用是有歧义的,所以这一种情况也是不可以构成函数的重载。在函数重载的时候,我们注意要注意一点,那就是函数带有默认参数的这一种情况。
那么现在我们就来讨论一下第二种情况吧。当我们在应用程序中调用output()函数的时候,大家有没有想过应该是调用的是哪一个函数的呢?在这里,我们要注意咯。那就是只有函数的返回类型不一样,这是不可以构成函数的重载的。经过上面的一番讨论,对于VC++的重载函数你都理解了吗?
相关文章推荐
- 深入了解VC++编译器的使用
- 深入了解VC++编译器的使用
- 深入了解VC++编译器
- 深入了解VC++编译器
- 深入了解iOS中的VC切换的传值方式
- 深入了解VC编译器
- 深入了解 vc 编译器
- 深入了解VC++编译器的使用
- 深入了解VC++编译器的使用
- 深入了解MediaServer-1
- CodeFirst之深入了解EntityFramework
- 深入了解OpenGL——OpenGL的演化
- 半深入了解float与inline-block
- 深入了解Android蓝牙Bluetooth——《基础篇》
- Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优
- 深入了解DSP与ARM
- c#接口深入一步探究其作用,适合新人了解
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- 深入了解JAVA虚拟机和JVisualVM简单使用
- 深入了解Java类型生命周期