通过#define定义宏,编译代码时相当于文本替换操作,下面写个案例,定义一个MAKESETGETPROPERTY,实现为类中受保护的成员变量添加Get、Set属性:
#include <iostream>
using namespace std;
#define MAKESETGETPROPERTY(V, T) void Set ## V (T NewV) {V = NewV;} \
T Get ## V () {return V;}
class TestMacro
{
protected:
int Number;
public:
MAKESETGETPROPERTY(Number, int)
};
int main()
{
TestMacro tm;
tm.SetNumber(233);
cout << tm.GetNumber() << endl;
system("pause");
}
通过第13行MAKESETGETPROPERTY宏,为Number添加Get和Set属性,第19、20行可以调用属性进行设置和获取操作,定义宏时"##"起拼接字符的功能,打印结果如下: