参数传递有几种方式?要实现面向对象的运行时多态性参数传递应采用什么方式?

来源:百度知道 编辑:UC知道 时间:2024/06/05 18:26:56

参数传递有传值、传址和引用三种

void f(int n){}//定义传值方式
int a;
f(a);//调用传值方式

void f(int *n){}//定义传址方式
int a;
f(&a);//调用传址方式

void f(int &n){}//定义引用方式
int a;
f(a);//调用引用方式

传值方式适合一般数值传送,并且不改变原数据,但要消耗内存空间
传址方式适合传递数组、指针,由于传递的是地址,所以直接操作会改变原数据
引用方式和指针比较类似,是相对比较新的一种方式,一般情况下能用传址的就能用引用,而且用引用更方便一点。

要体现面向对象的多态性不是传递方式的原因,是函数重载。
即同一函数名可以定义不同的副本,在对不同调用时有不同的反应
如:
void f(){}//不带参数
void f(int a){}//带一个整形参数
void f(int a,int b)//带两个整形参数
void f(double a){}//带一个double型参数
void f(char a){}//带一个字符型参数

以下依次对它们调用:
f();
int a;
f(a);
int a1,a2;
f(a1,a2);
double b;
f(b);
char c;
f(c);

区别函数重载可以是
参数类型(整形、实型、字符型等)
参数个数
但不能是返回类型,如:
int f(){}
double f(){}
这样是不行的,编译要出错。

还有许多要注意的地方,建议你看一下相关的书籍,我这说不完