C ++ / CLI中的属性是什么?

时间:2011-02-06 07:34:07

标签: properties c++-cli

我在C ++代码中用术语property看到了。我认为它与C ++ / CLI相关联。

究竟是什么?

2 个答案:

答案 0 :(得分:3)

它确实连接到C ++ / CLI(非托管C ++实际上并没有属性的概念)。

  

属性是行为类似于字段但由getter和setter访问器函数内部处理的实体。它们可以是标量属性(它们的行为类似于字段)或索引属性(它们的行为类似于数组)。在旧的语法中,我们必须直接在我们的代码中指定getter和setter方法来实现属性 - 并不像你猜的那么好。在C ++ / CLI中,语法更多是C#-ish,更易于编写和理解。

取自本文:http://www.codeproject.com/KB/mcpp/CppCliProperties.aspx

另请参阅有关C ++ / CLI中属性的MSDN

示例代码:

private:
   String^ lastname;

public:
   property String^ LastName
   {
      String^ get()
      {
         // return the value of the private field
         return lastname;
      }
      void set(String^ value)
      {
         // store the value in the private field
         lastname = value;
      }
   }

答案 1 :(得分:1)

是的,这确实是微软托管c ++代码或C ++ / CLI的版本。现在你不仅要写Get&设置方法,但您还需要将其定义为属性。 我会说,我讨厌额外输入“只读”和“只写”版本的财产非常整洁。

但是在不受管理的c ++中没必要!!!

例如,你可以写一个类(将做同样的事情!):

std::string GetLastName() const { return lastname;}
void SetLastName(std::string lName) { lastname = lName;}

'const'确保它'GET'是只读的,并且该组清晰。无需定义属性或添加String ^与std :: string ....

的混淆