C 11 中的属性
C#:
<code class="csharp">public Foo foo { get; private set; }</code>
C :
<code class="cpp">private: Foo foo; public: Foo getFoo() { return foo; }</code>
C 11 语法糖
C 11 不提供属性的直接语法糖,但您可以定义自己的语法糖。使用未命名的类,您可以创建如下结构:
<code class="cpp">struct Foo { class { int value; public: int &operator=(const int &i) { return value = i; } operator int() const { return value; } } alpha; class { float value; public: float &operator=(const float &f) { return value = f; } operator float() const { return value; } } bravo; };</code>
此结构允许您访问属性等成员:
<code class="cpp">Foo foo; foo.alpha = 10; // Equivalent to foo.setAlpha(10) int i = foo.alpha; // Equivalent to foo.getAlpha()</code>
您可以通过添加 getter 来进一步自定义此实现和 setter 方法并扩展结构以支持类成员访问。
以上是如何使用语法糖在 C 11 中实现属性?的详细内容。更多信息请关注PHP中文网其他相关文章!