1.第五章

来源:互联网 发布:matlab中雅可比矩阵 编辑:程序博客网 时间:2024/05/17 05:53

1.在C++中,还有另一个愿意需要对函数名进行重载:构造函数。因为构造函数的名字预先由类的名字确定,所以只能由一个构造函数名,但是如果我们想用几种方法来创建一个对象时该怎么办呢?

所以重载函数的本质就是允许函数同名。

2.函数重载允许多个函数同名,但是还可以以不同的方法调用同一函数。

C++中有一个很通用的做法叫缺省参数,缺省参数就是在用户调用一个函数时,没有指定参数,用来调用同一函数。这样,f("hello "); f("hi",1),和f(“howdy”,2,'c')可以调用同一函数。

他们可能是调用三个重载函数,我们通常希望调用同一函数来完成相同的操作。

3.重载函数虽然可以让我们有同名的函数,但是这些函数的参数列表应该不一样。所以,为了让重载函数正确工作,编译器要用函数名来区分参数类型名。

例如:

void print(char);

void print(float);

上面两个在全局范围定义的函数,可能会产生_print_char和_print_float的内部名。(不同的编译器可能会产生不同的内部名)

所以,我们可以对不同的函数用同样的名字,只要函数的参数不同。编译器会通过分解这些名字,范围和参数来产生内部名以供链接使用。

Q:为什么不用返回值重载

A:因为我们总是调用一个函数但是忽略它的返回值,在这种情况下,编译器不能知道是调用了哪个函数。而且,读者也不知道哪个函数会被调用。

4.缺省参数

C++中缺省参数是在函数声明时,就给定一个值,如果我们在调用函数时没有给定这一参数的值,编译器会自动地插上这个值。

stash(int size);

stash(int size,int quantity);

可以用一个声明来代替 stash(int size, int quanitity = 0);

这样定义两个对象stash  A(100),B(100,0); 将会产生完全一样结果。

当用重载函数时,我们得把一个几乎同样含义,同样操作的函数写两遍甚至更多,而用缺省参数就好的多了。

在用缺省参数时要记住两天规则。第一:只有参数列表的后不参数才可是缺省的,也就是说,我们不可以在一个缺省参数后面又跟一个非缺省参数。第二,一旦我们开始使用缺省参数,那么这个参数后面的所有参数都必须是缺省的。

缺省参数的一个重要应用是在开始定义函数时用了一组参数,而使用了一段时间后发现要增加一些参数。现在我们只要把这些新增的参数都作为缺省的参数,就可以保证所有使用这一函数的代码不会遇到麻烦。

原创粉丝点击