#include "stdafx.h" using namespace std; #define max(a,b) ((a) > (b) ? (a) : (b)) // 定义宏 // #define max(a,b) a > b ? a : b; 这样定义是错误的 inline int max2(int a, int b) { return a > b ? a : b; } // 内联函数 template<class T> // 使用模板 inline const T& max3(const T& a,const T& b) { return a > b ? a : b; } class GamePlayer { private: static const int NUM_TURNS = 5; // constant eclaration int scores[NUM_TURNS]; // use of constant public: int* getScores(){ return scores; } void addNum(int index,int num){ scores[index] = num; } }; class GamePlayer2 { private: enum { NUM_TURNS = 5 }; // "the enum hack" — makes // NUM_TURNS a symbolic name // for 5 int scores[NUM_TURNS];// fine public: int* getScores(){ return scores; } void addNum(int index,int num){ scores[index] = num; } }; int _tmain(int argc, _TCHAR* argv[]) { cout << "HelloWorld" << endl; GamePlayer gp; gp.addNum(0,1); gp.addNum(1,2); gp.addNum(2,3); gp.addNum(3,4); gp.addNum(4,5); int a = 3,b = 4; double da = 3.1415; double db = 4.12; cout << max(a,b) << endl; cout << max(da,db) << endl; cout << "-------" << endl; cout << max2(a,b) << endl; cout << max2(da,db) << endl; // 自动进行了强制类型转换 cout << "-------" << endl; cout << max3(a,b) << endl; cout << max3(da,db) << endl; return 0; }