巨集 、模板
阿新 • • 發佈:2018-12-09
前處理器在編譯之前,根據程式設計師的指示決定要編譯的內容。
巨集
巨集定義一般有兩種,定義函式和常量
當文中用到較多相同的常量時:應該用巨集定義
在巨集定義函式時:應該多用括號。
使用巨集避免多次包含
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