C++基础学习笔记----第三课(内联函数、默认参数、占位参数)(二)

2014-11-24 02:54:34 · 作者: · 浏览: 8
t a = 0, int b, int c = 1) { return a + b + c; } int main() { printf ("func() = %d",func(1)); } 程序无法编译通过。
#include 
  
   
int func(int a , int b, int c = 1)
{
	return a + b + c;
}

int main()
{
	printf ("func() = %d",func(1,2));
}
  
程序打印结果是func()=4

C++的占位参数

1.占位参数的基本概念

占位参数只有参数类型声明,而没有参数名的声明一般的情况下,在函数体的内部无法使用占位参数。
#include 
  
   
int func(int a , int b, int)
{
	return a + b;
}

int main()
{
	printf ("func() = %d",func(1,2,3));
}
  
上述程序的打印结果是3,假如我们在调用func()函数的过程中传递的是两个参数,那么程序将不能够编译通过。这就是占位参数的一个重要作用。然而在上述程序中占位参数并没有起到实质性的作用。仅仅是起到了单纯的占位作用。

2.占位参数的意义

占位参数的意义主要有两点,一点是为了以后程序的扩展留下线索,另一点重要作用就是兼容
C语言
中不规范的写法。例程:(将占位参数与默认参数结合起来使用!)
#include 
  
   

int func()
{
    return 1;
}

int main(int argc, char *argv[])
{
    printf("func() = %d\n", func());
    printf("func(1) = %d\n", func(1));
    
    printf("Press enter to continue ...");
    getchar();	
    return 0;
}
  
在上述程序中,假如原来这个程序来自于C语言的编写,所以两次函数调用都是合法的。但是这样的参数传递在C++中是绝对不合法的,假如我们有大量的这样的代码存在,那么一个工程的修改量将会大大加大。这个时候我们就需要启用占位参数。修改后的程序如下所示:
#include 
  
   

int func(int = 0)
{
    return 1;
}

int main(int argc, char *argv[])
{
    printf("func() = %d\n", func());
    printf("func(1) = %d\n", func(1));
    
    printf("Press enter to continue ...");
    getchar();	
    return 0;
}