Learning ©➕➕
4.52K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#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