c++中使用C#风格的属性定义

property对于c#而言,一个类可以有成员变量、成员函数、和属性,如右图所示。然而在C++中却没有“属性”这一概念,为了达到相同的效果,在C++中一般是采用get_XXX()和set_XXX()两个函数来实现外部对成员变量的访问。这样做的弊端很明显,类的声明中多了很多冗余的代码。这里先介绍下来自codeproject的原创做法:

首先利用VC6及更新版本支持的语句特性:

定义如下宏来解决问题吧。

来试着定义一个类:

好了,可以如C#一样直接调用了:

再增加读写限制:

请注意,这样改写后并无性能损失哦!!
有人修正了拷贝返回值性能的损失及const转换警告

当然你如果仍很喜欢get,set模式的话,也可以用以下宏定义:

其他编译器,可使用模版类实现,如下:

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注