天天看点

c++之面向过程程序设计

一、概括:

c++在面向过程程序设计方面和c基本兼容,具体不兼容的见最后。本篇主要总结 函数重载,函数模板及泛型编程。c++是强类型语言,强类型语言灵活性较差,但效率很高,c++在保证效率的同时也追求灵活性。以上三个特性就是为了灵活性而设计的。

二、函数的重载

因为c++是强类型语言,所以具有相同逻辑不同参数类型的函数要分别实现,自然也要具有不同的函数名称。函数重载可以使具有相同逻辑的参数不同的函数具有相同的名称,这样做的意义在于可以使接口单一,清晰。

#include <stdio.h>
#include <stdlib.h>

int add(int num1,int num2)
{
	return(num1+num2);
}

double add(double num1,double num2)
{
	return(num1+num2);
}

int main(void)
{
	printf("%d\n",add(3,4));
	printf("%f\n",add(3.0,4.0));
	system("pause");
	return 0;
}

/*
因为和c语言兼容,所以就存在数据类型自动隐式转换,所以函数重载也存在自动隐式转换,就产生了
噩梦般的垃圾函数重载参数自动推演,在实际设计最好为没一个需要的操作可能设计对应的函数,避免让c++进行自动推演。
例如不要调用add(3,4.0),如果需要请设计一个 double add(int num1,double num2);
*/
           

三、函数模板

函数重载机制可以让接口单一,清晰,但是我们还是要为不同的参数类型实现不同的函数,函数模板机制就是把参数类型抽象化,这样我们只需要写出函数模板,然后根据函数模板实例化出我们需要的函数。(这在脚本语言里是多么的平常的事情啊)

#include <stdio.h>
#include <stdlib.h>

template <typename first_type,typename second_type>
	second_type add(first_type num1,second_type num2) //返回值类型必须由参数类型取得
	{
		return(num1+num2);
	}

int main(void)
{
	printf("%d\n",add(3,4));
	printf("%f\n",add(3,4.0));
	printf("%f\n",add(3.0,4.0));

	system("pause");
	return 0;
}

/*
多么强大的功能,往往我们被其他的细枝末节所牵绊,而不敢往前。
*/
           

四、泛型编程

函数模板给于我们很多启示,数据类型的抽象化给编程带来了巨大的灵活性,

五、异常处理