首先,形参大致可以分为三种:非引用形参、引用形参和指针类型形参。
一、非引用形参
在传递参数的时候,不论是所谓的传值还是传址,实际上都是实参值到形参值的复制,其中的区别只是复制的是普通对象还是引用对象而已。对于非引用形参,通过参数传递之后,形参是实参的一个副本,而非引用形参使得复制后形参与实参并没有任何关联,因此,在函数中对形参的任何操作将不会影响到实参的值,因此,不论实参是变量还是常量,形参的操作是基于副本的,将不受任何的限制。如下例子:
void func1(int num)
{
int value1 = num;
}
void func2(const int num) //const形参
{
int value1 = num;
}
void main()
{
int num1 = 1;
const int num2 = 2;
func1(num1);
func1(num2); //ok,将const对象传递给非const形参
func2(num1);
func2(num2);
这里,尽管实参是const常量,仍然可以传递给非const形参,因为形参操作的是实参的副本,并不直接访问const实参,因此,不论实参是不是const常量都与形参无关了。
对于编