Структура (програмування)

Структура - конструкція більшості мов програмування, що дозволяє містити в собі набір змінних різних типів. У мовах сімейства Pascal структури традиційно називають записами ( англ. record ).

З впровадженням концепції об'єктно-орієнтованого програмування поняття структури було розширено, зокрема була додана можливість включення до структури функцій-методів, з'явилися ключові слова для обмеження доступу до елементів структури. В результаті структура стала дуже схожа на класи і інтерфейси, однак в більшості мов зберегла деякі відмінності від них.


1. Приклад оголошення структури

1.1. Сі

 struct  str_name  {  int  member_1  ;  float  member_2  ;  char  member_3  [  256  ]  ;  / * ... * /  }  ;  / / Приклади ініціалізації структури.  struct  str_name struct0  ;  struct  str_name struct1  =  {  1  ,  3.1416  ,  "Doit"  / * ... * /  }  ;  struct  str_name struct2  =  {  member_1  :  2  ,  member_2  :  3.1416  ,  member_3  :  "Doit"  / * ... * /  }  ;  struct  str_name struct2  =  {  .  member_1  =  2  ,  .  member_2  =  3.1416  ,  .  member_3  =  "Doit"  / * ... * /  }  ; 

1.2. C + +

 struct  str_name  {  private  :  int  member_1  ;  float  member_2  ;  public  :  std  ::  string  member_3  ;  / / ...  }  ;  / / Приклади ініціалізації структури.  str_name struct0  ;  str_name struct1  =  {  1  ,  3.1416  ,  "Doit"  / * ... * /  }  ;  str_name struct2  =  {  member_1  :  2  , Member_2  :  3.1416  , Member_3  :  "Doit"  / * ... * /  }  ;  str_name struct2  =  {  .  member_1  =  2  ,.  member_2  =  3.1416  ,.  member_3  =  "Doit"  / * ... * /  }  ; 

1.3. C #

 struct  str_name  {  private  int  member_1  ;  private  float  member_2  ;  public  string  member_3  ;  / / ...  }  ; 

1.4. Pascal

 type  str_name  =  record  begin  public  :  member_1  :  integer  ;  member_2  :  extended  ;  private  :  member_3  :  string  ;  {... }  end  ; 

2. Відмінності від класів

Відмінності класів від структур в різних мовах різняться. Відмінності для мови С # :

  • Розміщення: в області стека (класи - керована купа (heap))
  • Копіювання: створюється окрема копія об'єкта, яка після копіювання живе "своїм життям" (класи - створюється посилання на той же клас (т. зв. Instance)
  • Спадкування: не дозволяється додаток своїми властивостями; від нього не можна успадковувати (клас - дозволяє, крім випадків коли клас створювався з ключовим словом sealed, не дозволяючим спадкування)
  • Передача параметрів: як локальні копії змінних (у класах - як посилання)
  • Конструктор: так, окрім конструктора за замовчуванням, який не вимагає параметрів (в класах - так, без обмежень)
  • Звільнення змінної: при виході за межі видимості (в класах - під час процесу складання сміття (garbage collector)


Відмінності для мови C + + :

  • Члени структури за замовчуванням (без явної вказівки специфікатора доступу) є публічними, а члени класу - закритими
Перегляд цього шаблону Типи даних
Неінтерпретіруемие
Числові
Текстові
Покажчик

Адреса Посилання

Композитні
Інші

Логічний Нижчий тип Колекція Перераховуються тип Виняток First-class function Opaque data type Recursive data type Семафор Потік Вищий тип Type class Unit type Void

Пов'язані теми