Что такое свойства в C ++ / CLI? - PullRequest
4 голосов
/ 06 февраля 2011

Я видел в термине property в коде C ++. Я думаю, что это связано с C ++ / CLI.

Что именно?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Он действительно был связан с C ++ / CLI (неуправляемый C ++ на самом деле не имеет понятия свойств).

Свойства - это объекты, которые ведут себя как поля, но внутренне обрабатываются getterи функции доступа сеттера. Они могут быть скалярными свойствами (где они ведут себя как поле) или индексированными свойствами (где они ведут себя как массив).В старом синтаксисе мы должны были указывать методы getter и setter непосредственно в нашем коде для реализации свойств - это было не так хорошо, как вы могли догадаться.В C ++ / CLI синтаксис более C # -ish и легче писать и понимать.

Взято из этой статьи: http://www.codeproject.com/KB/mcpp/CppCliProperties.aspx

Также см. MSDN о свойствах в C ++ / CLI.

Пример кода:

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 голос
/ 07 сентября 2012

Да, действительно, это версия Microsoft управляемого кода C ++ или C ++ / CLI. Теперь вам не только нужно писать методы Get & Set, но и определять его как свойство. Я скажу так же, как и ненавижу лишний ввод версий свойства «Только для чтения» и «Только для записи». Но не нужно в неуправляемом c ++ !!!

Например, вы можете написать в классе (будет делать то же самое!):

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

«const» удостоверился, что «GET» только для чтения, и набор был чистым. Нет необходимости определять свойство или добавлять путаницу String ^ против std :: string ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...