功能性肠胃病怎么治:VC++深入详解:函数的重载
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 14:12:16
我们希望在构造pt这个对象的同时,传递x坐标和y坐标的值。可以再定义一个构造函数,如例2-8所示。
例2-8
#include
class point
{
public:
int x;
int y;
point()
{
x=0;
y=0;
}
point(int a, int b)
{
x=a;
y=b;
}
void output()
{
cout< }
};
void main()
{
point pt(5,5);
pt.output();
}
在这个程序中,有两个构造函数,它们的函数名是一样的,只是参数的类型和个数不一样。这在C语言中是不允许的,而在C++中上述定义是合法的,这就是C++中函数的重载(overload)。当执行main函数中的point pt(5,5)这条语句时,C++编译器将根据参数的类型和参数的个数来确定执行哪一个构造函数,在这里即执行point(int a, int b)这个函数。
例2-8
#include
class point
{
public:
int x;
int y;
point()
{
x=0;
y=0;
}
point(int a, int b)
{
x=a;
y=b;
}
void output()
{
cout<
};
void main()
{
point pt(5,5);
pt.output();
}
在这个程序中,有两个构造函数,它们的函数名是一样的,只是参数的类型和个数不一样。这在C语言中是不允许的,而在C++中上述定义是合法的,这就是C++中函数的重载(overload)。当执行main函数中的point pt(5,5)这条语句时,C++编译器将根据参数的类型和参数的个数来确定执行哪一个构造函数,在这里即执行point(int a, int b)这个函数。
重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载。分析以下两种情况,是否构成函数的重载。
第一种情况:
(1)void output();
(2)int output();
第二种情况:
(1)void output(int a,int b=5);
(2)void output(int a);
对于第一种情况,当我们在程序中调用output()函数时,读者认为应该调用的是哪一个函数呢?要注意:只有函数的返回类型不同是不能构成函数的重载的。
对于第二种情况,当我们在程序中调用output(5)时,应该调用的是哪一个函数呢?调用(1)的函数可以吗?当然是可以的,因为(1)的函数第二个参数有一个默认值,因此可以认为调用的是第一个函数;当然也可以是调用(2)的函数。由于调用有歧义,因此这种情况也不能构成函数的重载。在函数重载时,要注意函数带有默认参数的这种情况。
哪里可以下载《vc++深入详解》的电子书
VC调试中遇到的构造函数和运算符重载的错误
函数重载和函数覆盖的区别
VC++运算符重载的问题
关于VC++的深入学习
问个关于构造函数函数重载的问题
请问多态 函数的重载有什么区别?还有函数的重载和函数模板有什么区别??
VC里运算符重载用的多不多?
运算符重载函数根据什么定义它为成员函数还是友元函数的?
函数重载到底怎么运用
有哪些函数可以重载?
vc进程函数的问题?
圆的函数式及其详解
VC++6.0编译器是否支持重载的友员操作符访问私有成员变量?
VC++中的输出流运算符重载
c++:如何写一个正确的能编译通过的<<重载函数
java的重载实例?
重载的问题?
VC++ 函数的很简单的问题
vc++中sub()函数的作用是什么??
我的VC++函数怎么不变颜色???
VC++中memcpy()函数的用法
有关VC函数TARCE的问题
VC++中的srand函数的问题