kuikuitage

  博客园  ::  :: 新随笔  :: 联系 ::  :: 管理
#include <iostream>
using namespace std;

#define MAX(T) max_##T(T x, T y){return x < y ? y : x;} MAX(int) MAX(double) MAX(string) #define max(T) max_##T int main (void) {   cout << max(int)(1, 2) << endl;   cout << max(double)(1.2, 3.4) << endl;   cout << max(string)("hello", "world") << endl;   return 0; }

优点:减少代码编辑量,同时实现了类似模板的类型无关形式编程。

缺点:添加新类型调用时都需要手动添加其定义即MAX(T)

   对于返回值有限制,宏不是函数,本身只做文本替换,宏执行得到的结果是没有安全性检查的。MAX(T)展开并没有返回类型指定。

posted on 2018-07-14 17:22  kuikuitage  阅读(187)  评论(0编辑  收藏  举报