前言: C# 是优雅的编程语言,C# 的使用者可以方便地维护类中的字段,使用属性可以创建可读写或者只读的字段。而在 C++ 中也能简单地模拟这种方式。
样例:
#include <iostream>
/*
* 模拟 C# 中的属性,属性支持读写但封装了保存值的变量
*/
using namespace std;
class Test
{
private:
int _value;
public:
Test()
{
_value = 0;
}
int* Value()
{
return &_value;
}
const int* ValueReadOnly()
{
return &_value;
}
};
int main(void)
{
Test test;
cout << *test.Value() <<endl;
*test.Value() = 2;
//*test.ValueReadOnly() = 3; // ERROR
cout << *test.ValueReadOnly() <<endl;
return 0;
}
输出结果为:
0
2
Test 类中的 Value() 函数返回自身 _value 的地址,因此函数加上解引用符号后可以作为右值或左值使用,而私有变量 _value 被保护起来。