C++而言,对象的概念深入人心,你想控制所有信息的调用和实现。
分析一下他们的优缺点:
我不太喜欢使用#define定义函数是因为,本人底子薄,有时候还是需要去看看堆栈,像宏定义函数实现,不能直接调试,实在没办法还需要看看汇编。
宏定义不注重作用域,const定义常量有数据类型,编译器可以对其进行类型安全检查,数据可以分配数据空间,宏不会分配空间。
最主要的是不能调试,看不到实现过程,小白很伤。
还有宏的应用是宏定义函数,最简单的容易引起歧义的操作比如比较大小
#include "stdafx.h"
#include <iostream>
using namespace std;
void func(int nData)
{
cout << nData << endl;
}
#define CHECK_MAX_DATA(a,b) func((a) > (b) ? (a) : (b))
template<class T>
inline void CheckMaxData(const T& arg1, const T& arg2)
{
func(arg1 > arg2 ? arg1 : arg2);
}
int main()
{
int nRet = 10;
int nArg = 9;
CHECK_MAX_DATA(++nRet, nArg);
//CheckMaxData<int>(++nRet, nArg);
cout << nRet << endl;
getchar();
getchar();
return 0;
}