C++ Variables
متغیرها در C++: ظروفِ هوشمندِ اطلاعات 🧱🧬
متغیرها بخشِ بنیادینِ هر زبانی هستند، اما در C++، آنها قدرتِ بیشتری دارند. یک متغیر در واقع نامی برایِ یک قطعه از حافظهیِ رم (RAM) است که دادههایِ شما را نگه میدارد.
۱. اعلان و مقداردهی (Declaration & Initialization)
برای ساختنِ یک متغیر، باید نوعِ داده و نامِ آن را مشخص کنید:
{code_block('int score = 100;\ndouble price = 19.99;\nchar grade = "A";')}۲. انواعِ مقداردهی در C++ مدرن:
- Copy Initialization:
int x = 5;(روش کلاسیک) - Direct Initialization:
int x(5); - Uniform/Brace Initialization:
int x{5};(توصیهیِ C++ مدرن)
int یا return) استفاده کنند.
متغیرهایِ چندگانه:
میتوانید چندین متغیر از یک نوع را در یک خط تعریف کنید:
{code_block('int x = 5, y = 10, z = 20;')}const استفاده کنید. این کار به کامپایلر اجازه میدهد کدهایِ بهینهتری بسازد.
بخش تخصصی: مهندسیِ دادهها و مدیریت حافظه 🧱⚙️⚡
در C++، متغیرها فقط ظرفی برای داده نیستند؛ آنها مدیریتکنندهیِ منابع سیستم هستند. درکِ نحوهیِ ذخیرهسازیِ این دادهها، تفاوتِ یک کدنویسِ عادی و یک معمارِ سیستم است.
۱. مقداردهیِ سراسری (Universal Initialization)
از استاندارد C++11 به بعد، روشِ جدیدی برای مقداردهی معرفی شد که از آکولاد {} استفاده میکند. این روش دو مزیت بزرگ دارد: اول اینکه از Narrowing Conversion جلوگیری میکند (مثلاً نمیگذارد یک double را در int بریزید و داده گم شود)؛ و دوم اینکه مشکلِ "Most Vexing Parse" را حل میکند که باعث میشد کامپایلر فکر کند شما در حالِ اعلانِ یک تابع هستید نه متغیر.
۲. معماریِ شئ String (SSO)
در C++، کلاسِ std::string بسیار هوشمند است. اکثرِ پیادهسازیهایِ مدرن از تکنیکی به نام Small String Optimization استفاده میکنند. اگر رشتهیِ شما کوتاه باشد (مثلاً کمتر از ۱۵ یا ۲۳ کاراکتر)، آن را مستقیماً داخلِ خودِ شئ (روی Stack) ذخیره میکند تا از فراخوانیِ سنگینِ سیستمعامل برایِ دریافتِ حافظه از Heap جلوگیری شود. این یعنی سرعتِ فوقالعاده در پردازشِ متنهایِ کوتاه.
۳. دقتِ محاسباتِ اعشاری (IEEE 754)
دنیایِ کامپیوتر باینری است و نمیتواند تمامِ اعدادِ اعشاریِ دهدهی را با دقتِ ۱۰۰٪ ذخیره کند. مثلاً عدد 0.1 در باینری یک عددِ متناوب است. به همین دلیل در سیستمهای مالیِ حساس، هرگز نباید از float یا double برایِ مبالغِ دقیق استفاده کرد؛ مهندسان در این مواقع از متغیرهایِ صحیح (Integer) بر حسبِ "کوچکترین واحد" (مثل ریال یا سنت) استفاده میکنند.
auto به جایِ نوعِ داده، به کامپایلر اجازه میدهد خودش نوعِ متغیر را حدس بزند. این کار در کدهایِ پیچیده باعث میشود کدِ شما در برابرِ تغییراتِ آینده (Refactoring) مقاومتر باشد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر از نوعِ int به نام age با مقدارِ 20 تعریف کنید و آن را با استفاده از cout چاپ کنید.
#include <iostream>
using namespace std;
int main() {
int age = 20;
cout << age;
return 0;
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.