یه تکه کد برای اینکه ایده ای از شی گرایی 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 هست رفع میکنه