Learning ©➕➕
4.52K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#70
#class
#struct
#call #by #value
#call #by #reference

✅ فراخوانی struct ها به صورت call by value انجام میشه که نیاز به & هست ولی فراخوانی class ها به صورت call by reference صورت میگیره یعنی :
#include "stdafx.h"

#include <iostream>

using namespace std;

🔹تعریف struct که برای مقدار دادن به داده هاش باید & توی تابع set_data گذاشت :
struct d

{

  int x;

  int y;

  int z;

void set_data(struct d &w, int x, int y, int z);

void show(struct d a);

};

void set_data(struct d &w, int x, int y, int z)

{

  w.x = x;

  w.y = y;

  w.z = z;

}

void show(struct d a)

{

  cout << a.x << " " << a.y << " " << a.z;

}

int main()

{

  d a{};

  set_data(a, 2, 3, 4);

  show(a);

  cout << endl;

  system("pause");

  return 0;

}

🔹تعریف class که برای مقدار دادن به داده هاش نیازی به استفاده از & نیست :
class test

{

public:

  void set(int a, int b, int c)

  {

    x = a;

    y = b;

    z = c;

  }

  void show()

  {

    cout << x << " " << y << " " << z;

  }

private:

  int x, y, z;

};

int main()

{

  test t;

  t.set(10, 20, 30);

  t.show();

  cout << endl;

  system("pause");

  return 0;

}

@Learncpp
#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
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

این ساختار مقادیر استاندارد زمان را داخل خودش دارد و داخل چندین تابع مجبوریم از آن استفاده کنیم.
البته همه ی این مقادیر جدا از هم هستند.
این ساختار 9 عضو دارد که از این قرار
(t.me/Learncpp/1377)
هستند.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

🔻نمایش 9 عضو تابع struct tm
(t.me/Learncpp/1376)

@Learncpp
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

پرچم ساعت تابستانی (The Daylight Saving Time flag یا tm_isdst) می تواند مقادیر زیر را داشته باشد.

1.مقداری بزرگتر از صفر که نشان دهنده ی روشن بودن این قابلیت در سیستم می باشد.

2.مقدار صفر که نشان دهنده ی خاموش بودن این قابلیت در سیستم می باشد.

3.مقداری کوچکتر از صفر که نشان دهنده ی عدم وجود اطلاعات کافی در سیستم می باشد.

همچنین tm_sec به طور کلی در بازه ی(0 _59)تعریف می شود و مقادیر اضافی برای همسان سازی پرش های ثانیه در سیستم های مختلف استفاده می شود.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp