انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: معرفی منابع برای cpp  (دفعات بازدید: 1263 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین naja

  • Jr. Member
  • *
  • ارسال: 31
  • جنسیت : پسر
معرفی منابع برای cpp
« : 12 شهریور 1399، 12:41 ب‌ظ »
بعد از تاپیک قبلی تصمیم گرفتم cpp رو به قول خارجیا از scratch شروع کنم. خوشبختانه بخاطر زمینه قبلی java تونستم syntax و شی‌گرایی رو به سرعت بفهمم تموم شه بره الان دنبال دو سه تا چیزم که نه تنها از گوگل نتیجه نگرفتم بلکه به عنوان تلاش آخر خواستم در مورد make بدونم تو ویکی اینجا که چیزی پیدا نکردم
خب لطف میکنید منابع فارسی یا انگلیسی جدید (بهترین نتایج من تو سرچ مال ۲۰۰۸ تا ۲۰۱۲ بود) در مورد
- این داستان دم و دستگاه make و autoconf اینا
- کتابخونه ها از کجا پیدا کنم غیر گیتهاب و گوگل
- در cpp متغیر و پوینترش جداس منابع خوبی برا پوینتر میخوام و مدیریت حافظه دستی و اسمارت پوینتر
- کراس کامپایل از ویندوز برای لینوکس با mingw یا هرچی فک میکنید بهتر از mingw

از Eclipse به عنوان IDE استفاده میکنم پس اگه پلاگینای خاصی مناسب CDT میشناسید اونم معرفی کنید
مرسی

آفلاین هومان

  • High Hero Member
  • *
  • ارسال: 1527
  • جنسیت : پسر
  • آرچ + گنوم
پاسخ : معرفی منابع برای cpp
« پاسخ #1 : 12 شهریور 1399، 01:06 ب‌ظ »
درباره ی پوینتر :https://www.oreilly.com/library/view/understanding-and-using/9781449344535/

آفلاین علیرضا. آ.

  • Sr. Member
  • *
  • ارسال: 333
  • جنسیت : پسر
پاسخ : معرفی منابع برای cpp
« پاسخ #2 : 12 شهریور 1399، 03:23 ب‌ظ »
یه تکه کد برای اینکه ایده ای از شی گرایی C++ بگیری ( البته چون جاوا کار کردی حتما سریع متوجه میشی )
#include <iostream>
#include <string>

using namespace std;

class Person {
  public:
      int age;
      string name;
      void SayHello() {
          cout << "Hello! I'm " << name << endl;
      }
      bool SetPassword(string input) {
          if (age < 19) {
            password = input;
            return true;
          }
      }
  private:
    string password;
};

int main() {

    Person obj1;
    obj1.name = "Alireza";
    obj1.age = 13;
    obj1.SayHello();
    if (obj1.SetPassword("1386")) {
        cout << "Password changed" << endl;
    }
    cout << obj1.age << endl;
    //Code stops here because passowrd atter is private
    //cout << obj1.password << endl;
   
    Person obj2;
    obj2.name = "Hasan";
    obj2.age = 20;
    obj2.SayHello();
    cout << obj2.age << endl;
   
return 0;
}

آفلاین naja

  • Jr. Member
  • *
  • ارسال: 31
  • جنسیت : پسر
پاسخ : معرفی منابع برای cpp
« پاسخ #3 : 12 شهریور 1399، 05:37 ب‌ظ »
یه تکه کد برای اینکه ایده ای از شی گرایی C++ بگیری ( البته چون جاوا کار کردی حتما سریع متوجه میشی )
#include <iostream>
#include <string>

using namespace std;

class Person {
  public:
      int age;
      string name;
      void SayHello() {
          cout << "Hello! I'm " << name << endl;
      }
      bool SetPassword(string input) {
          if (age < 19) {
            password = input;
            return true;
          }
      }
  private:
    string password;
};

int main() {

    Person obj1;
    obj1.name = "Alireza";
    obj1.age = 13;
    obj1.SayHello();
    if (obj1.SetPassword("1386")) {
        cout << "Password changed" << endl;
    }
    cout << obj1.age << endl;
    //Code stops here because passowrd atter is private
    //cout << obj1.password << endl;
   
    Person obj2;
    obj2.name = "Hasan";
    obj2.age = 20;
    obj2.SayHello();
    cout << obj2.age << endl;
   
return 0;
}
بله خیلیم ممنون دو تا نکته
- از اینکه از کلمه کلیدی public, private و protected توی cpp فاکتور بگیرم خیلی خوشحالم خیلی باحاله
- اینجا واسه instantiate لازم نیس new استفاده کنم مث اینکه خب با چیزایی که من میدونم اینجور instantiate میفرسته تو stack بجای heap حالا تو این دو تا تیکه کد سوال من اینه که اونجا که دیگه با obj کار ندارم اگر کد اولی رو استفاده کنم قبل صدا کردن theSlowFunction() خود سیستم/رانتایم/نمیدونم (چون از طرفی باینری جنریت میکنه از طرفی ویندوز universal c runtime داره) obj رو از stack خالی میکنه یا باید کد دومی رو استفاده کنم و خودم از heap خالی کنم قبل theSlowFunction()
(Miss you Garbage Collector)
int main() {
SomeClass obj;
obj.someJob();
// im done with obj here
theSlowFunction();
}
یا اینکارو بکنم
int main() {
SomeClass obj = new SomeClass();
SomeClass *ptr = &obj;
obj.SomeJob();
// im done with obj here
delete(ptr);
// and now i released it
theSlowFunction();
}
پ.ن: اگر اشتباه syntax داره ببخشید معمولا ide هست رفع میکنه

آفلاین علیرضا. آ.

  • Sr. Member
  • *
  • ارسال: 333
  • جنسیت : پسر
پاسخ : معرفی منابع برای cpp
« پاسخ #4 : 12 شهریور 1399، 07:21 ب‌ظ »
یه تکه کد برای اینکه ایده ای از شی گرایی C++ بگیری ( البته چون جاوا کار کردی حتما سریع متوجه میشی )
#include <iostream>
#include <string>

using namespace std;

class Person {
  public:
      int age;
      string name;
      void SayHello() {
          cout << "Hello! I'm " << name << endl;
      }
      bool SetPassword(string input) {
          if (age < 19) {
            password = input;
            return true;
          }
      }
  private:
    string password;
};

int main() {

    Person obj1;
    obj1.name = "Alireza";
    obj1.age = 13;
    obj1.SayHello();
    if (obj1.SetPassword("1386")) {
        cout << "Password changed" << endl;
    }
    cout << obj1.age << endl;
    //Code stops here because passowrd atter is private
    //cout << obj1.password << endl;
   
    Person obj2;
    obj2.name = "Hasan";
    obj2.age = 20;
    obj2.SayHello();
    cout << obj2.age << endl;
   
return 0;
}
بله خیلیم ممنون دو تا نکته
- از اینکه از کلمه کلیدی public, private و protected توی cpp فاکتور بگیرم خیلی خوشحالم خیلی باحاله
- اینجا واسه instantiate لازم نیس new استفاده کنم مث اینکه خب با چیزایی که من میدونم اینجور instantiate میفرسته تو stack بجای heap حالا تو این دو تا تیکه کد سوال من اینه که اونجا که دیگه با obj کار ندارم اگر کد اولی رو استفاده کنم قبل صدا کردن theSlowFunction() خود سیستم/رانتایم/نمیدونم (چون از طرفی باینری جنریت میکنه از طرفی ویندوز universal c runtime داره) obj رو از stack خالی میکنه یا باید کد دومی رو استفاده کنم و خودم از heap خالی کنم قبل theSlowFunction()
(Miss you Garbage Collector)
int main() {
SomeClass obj;
obj.someJob();
// im done with obj here
theSlowFunction();
}
یا اینکارو بکنم
int main() {
SomeClass obj = new SomeClass();
SomeClass *ptr = &obj;
obj.SomeJob();
// im done with obj here
delete(ptr);
// and now i released it
theSlowFunction();
}
پ.ن: اگر اشتباه syntax داره ببخشید معمولا ide هست رفع میکنه
stack خودش آزاد و به سیستم عامل داده میشه حتی در ابجکت ها.
اون heap هست که باید خودت همیشه آزاد کنی.

آفلاین بهنام …

  • High Hero Member
  • *
  • ارسال: 1028
  • إن أحسنتم أحسنتم لأنفسكم وإن أسأتم فلها
پاسخ : معرفی منابع برای cpp
« پاسخ #5 : 12 شهریور 1399، 11:12 ب‌ظ »
یکی از بهترین منابع آشنایی و مطالعه و بررسی زبان توی خود سامانه هست:
/usr/include/c++
/usr/include/boost
...
که باید با کتابخونه‌ها و ابزارهایی که آشنایی نسبی داری شروع کنی تا کم‌کم دستت بیاد چه‌جور از این فایل‌ها نکته یاد بگیری و بهرهٔ کافی را ببری. یه مدت کوتاه سی‌پلاس‌پلاس کار کردم ولی همون مدت کوتاه سرک‌کشیدن و جستجو توی این مسیرها خیلی خوب بود.
:) :)

آفلاین naja

  • Jr. Member
  • *
  • ارسال: 31
  • جنسیت : پسر
پاسخ : معرفی منابع برای cpp
« پاسخ #6 : 13 شهریور 1399، 12:26 ق‌ظ »
نمیخوام تاپیک رو با پیام های تشکر مکرر اسپم کنم همین یه دفعه عرض میکنم خدمتتون که از راهنمایی های همتون ممنونم

آفلاین alend

  • High Hero Member
  • *
  • ارسال: 1319
پاسخ : معرفی منابع برای cpp
« پاسخ #7 : 20 شهریور 1399، 02:21 ب‌ظ »
به نظرم به جای یادگیری make روی cmake وقت بزاری بهتر است.

آفلاین deadmarshal

  • Full Member
  • *
  • ارسال: 102
  • جنسیت : پسر
    • Tarjomeebook
پاسخ : معرفی منابع برای cpp
« پاسخ #8 : 15 مهر 1399، 11:50 ق‌ظ »
میتونی به جای cmake از premake استفاده کنی. فایل های premake به زبان Lua هست و خیلی راحت تره یادگیریش تا cmake و هر کاری که cmake میکنه هم میتونی با این انجام بدی. موفق باشی  ;)

آموزشش هم میتونی تو قسمت ویکی گیت هابش پیدا کنی.
https://premake.github.io/
I love learning languages, i'm currently learning Esperanto, i love Python programming language and of course linux