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;
}

/*
多麼強大的功能,往往我們被其他的細枝末節所牽絆,而不敢往前。
*/

四、泛型編程

函數模板給於我們很多啓示,數據類型的抽象化給編程帶來了巨大的靈活性,


五、異常處理





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章