1. 程式人生 > >巨集 、模板

巨集 、模板

前處理器在編譯之前,根據程式設計師的指示決定要編譯的內容。

巨集

巨集定義一般有兩種,定義函式和常量
當文中用到較多相同的常量時:應該用巨集定義
在巨集定義函式時:應該多用括號。
使用巨集避免多次包含
1 c++的標頭檔案一般用來宣告函式和類,若有一個class2類要用到class1中的類的話,應該用巨集,避免多次包含,提高效率
2 注意使用巨集一般不考慮資料資料型別
3 儘量的不要自己編寫巨集函式,儘可能的使用const,而不是巨集常量

#ifndef HEADER1_H
#define HEADER1_H
#include "class1.h"
class class2
{
}
#endif

模板

1 模板函式
如果有一個函式,他使用不同型別的變數及輸出,則可以運用模板編寫
運用模板函式,返回兩個變數中最大的一個

#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
template<typename T>
const T&getmax(T&num1, T&num2)
{
	if (num1 > num2)
		return num1;
	else
	{
		return num2;
	}
}
int main()
{
	int a = 2; int b = 3;
	cout<<getmax(a,b)<<endl;
    return 0;
}

2 模板類
含有兩個成員屬性的模板類

#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;
template<typename T1 = int, typename T2 = double>
class compares
{
private:
	T1 number1;
	T2 number2;
public:
	compares(const T1&num1, const T2&num2)
	{
		number1 = num1;
		number2 = num2;
		if (number1 >= number2)
			cout << "the max is " << number1 << endl;

		else
		{
			cout << "the max is " << number2<<endl;
		}
	}

};


int main()
{
	compares<>maxnumber(3, 3.14);
	compares<char, char>maxaltter('a', ' b');

	return 0;
}

3 模板類和靜態成員
在運用靜態成員時,應在定義屬性前加上static,
靜態成員需要初始化:一般為

template<typename parameters> statictype classname<template arguments>::staticvarname