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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: naja در 12 شهریور 1399، 12:41 ب‌ظ

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

از Eclipse به عنوان IDE استفاده میکنم پس اگه پلاگینای خاصی مناسب CDT میشناسید اونم معرفی کنید
مرسی
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: هومان در 12 شهریور 1399، 01:06 ب‌ظ
درباره ی پوینتر :https://www.oreilly.com/library/view/understanding-and-using/9781449344535/
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: علیرضا. آ. در 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;
}
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: naja در 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 هست رفع میکنه
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: علیرضا. آ. در 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 هست که باید خودت همیشه آزاد کنی.
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: بهنام … در 12 شهریور 1399، 11:12 ب‌ظ
یکی از بهترین منابع آشنایی و مطالعه و بررسی زبان توی خود سامانه هست:
/usr/include/c++
/usr/include/boost
...
که باید با کتابخونه‌ها و ابزارهایی که آشنایی نسبی داری شروع کنی تا کم‌کم دستت بیاد چه‌جور از این فایل‌ها نکته یاد بگیری و بهرهٔ کافی را ببری. یه مدت کوتاه سی‌پلاس‌پلاس کار کردم ولی همون مدت کوتاه سرک‌کشیدن و جستجو توی این مسیرها خیلی خوب بود.
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: naja در 13 شهریور 1399، 12:26 ق‌ظ
نمیخوام تاپیک رو با پیام های تشکر مکرر اسپم کنم همین یه دفعه عرض میکنم خدمتتون که از راهنمایی های همتون ممنونم
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: alend در 20 شهریور 1399، 02:21 ب‌ظ
به نظرم به جای یادگیری make روی cmake وقت بزاری بهتر است.
عنوان: پاسخ : معرفی منابع برای cpp
ارسال شده توسط: deadmarshal در 15 مهر 1399، 11:50 ق‌ظ
میتونی به جای cmake از premake استفاده کنی. فایل های premake به زبان Lua هست و خیلی راحت تره یادگیریش تا cmake و هر کاری که cmake میکنه هم میتونی با این انجام بدی. موفق باشی  ;)

آموزشش هم میتونی تو قسمت ویکی گیت هابش پیدا کنی.
https://premake.github.io/ (https://premake.github.io/)