Тема: Змінна та їх типи

Що таке змінна та які типи змінних існують у C++?

2 Востаннє редагувалося steamwater (19.10.2024 08:29:46)

Re: Змінна та їх типи

Змiнна це iм'я, що викорисовується для доступу до даних скалярного типу, таких як цiлi, числа з плаваючою крапкою, вказiвники, перечислення... - тобто основнi типи. Бiльш загальним поняттям є об'єкт. Тож змiннi можно вважати пiдмножиною об'єктiв. Коли говорять "змiнна", - за звичай, наголошують, що им'я посилається, саме на значення скалярного типу, на вiдмiну вiд типiв масиву, об'єкту, чи структури. Строгого визначеня я нiде не бачив. Ви можете знайти навiть такi перли як "константна змiнна". Тобто, у багатьох контекстах поняття змiнних та констант вживаються, як ортогональнi. Хтось з великих, скзав, що математика, це дивовижний спосiб водити себе за нiс. Коли я дивлюся на те, що математики роблять з прекметною логiкою, то лише разводжу руками. Особливо, це стосується прикладних математикiв. А оскiльки, програмування є роздiлом саме прикладної математики, то раджу не акцентувати увагу на визначеннях. Набагато краще зрозумiти як воно працює, та що зним можна зробити.
Наприклад, колись дуже давно, типом даних вважалася купка критерiїв: розмiр, формат, доступнi операцiї. У якомусь сенсi воно не втратило актуальностi i варто тримати цi критерiї, у горовi. При чому, виразом вважалась синтаксична конструкцiя, яка повертає значння. Тож легко було зрозумiти, який тип має вираз. Але зараз, виразом вважається синтаксична конструкцiя, яка вимагає якихось обчислювань. А це вже iнша справа, бо припускає сайдефекти, без повернення якогось значення як такого. До того ж, потiм з'явилася бiльш високорiвнева абстракцiя програмного об'єкту. Наприклад, посилання немає свого власного об'єкта даних, являючись програмним об'єктом. I воно має тип! Потiм почалася эра метапрогамування i на арену вийшли складнi вирази, що складаються з объяв типiв. Вони iнодi повертають типи (не значення у сенсi даних). I вони припускають певнi обчислення на этапi компiляцiї. Самi, як такi, вони типу не мають. Потiм з'явилася семантiка перемiщення з посиланням на rvalue. Оскiлькi, "старе" посилання не може вiдрiзнити тип значення для здiйснення перегрузки по неї, той винайшли rvalue посилання. Ще й знадобилося вводити категорiю значень... I ще з'явилась перегрузка по типу значень, про що явно нi де не кажуть. Але ж саме вона є головною метою, без розумiння якої, зрозумiти цi речи неможливо.
Про це можна багато говорити, але прийде час i ви зiткнетесь з цим на практицi. Тодi, легше бути вiдповiсти на конктретне запитання. Це тому, що С++, це саме про типи. А вона величенька, ця мова. До того ж, безглуздо розповiдати про те, чого запитуючий ще не може зрозумiти. Тож конкретнi питання, - конкретнi (бiльш-менш) вiдповiдi. А краткiсть це не сiнонiм конкретностi. Саме короткi запитання бувають дуже загальними.