#93#struct #ساختار #object #شی
#class #variable #متغییر
✅ چرا توی کلاسها برای صدا زدن توابع باید به صورت class.funct() صدا زده بشه ولی توی struct فقط اسم تابع صدا زده میشه ؟
🔹در جوابش فرض کنیم ما یک struct داریم به نام course و یک کلاس داریم به اسم unit , خب تفاوتی که دارن در نحوه تعریفشونه یعنی course a; با unit b; ??? وقتی ما course a; رو تعریف کردیم کامپایلر course رو به عنوان یک نوع (type) در نظر میگیره و a رو ب عنوان یک متغییر پس برای دسترسی به داده های struct نیازی به نقطه (.) نیست ولی وقتی ما تعریف میکنیم unit b; کامپایلر unit رو به عنوان یک کلاس در نظر میگیره و b روی به عنوان یک شی و برای صدا زدن توابع عضو کلاس باید با نقطه (.) بهشون دسترسی پیدا کنیم .
برای درک مطلب کد زیر رو در نظر بگیریم :
#include "stdafx.h"
#include<iostream>
using namespace std;
struct course
{int a = 0;
int b = 0;
int c = 0;
};
class unit
{public:
void set()
{cout << "@Learncpp\n";
}
};
void set(course &v, int _a, int _b, int _c)
{v.a = _a;
v.b = _b;
v.c = _c;
}
int main()
{course c1;//c1 یک متغیر است
unit u1;//u1 یک شی است
set(c1, 1, 2, 3);
c1.set(c1, 1, 2, 3);//error
cout << c1.a << " " << c1.b << " " << c1.c << endl;
u1.set(); //***//
cout << endl;
system("pause");return 0;
}
@Learncpp