PDA

View Full Version : سوال: علامات در برنامه نویسی شی گرا (. و :: و ->)



MinusOne
شنبه 07 بهمن 1391, 19:59 عصر
سلام ، دوستان من از یه زبان دیگه به C++ مهاجرت کردم ، میخواستم بدونم تفاوت . و :: و -> در برنامه نویسی شی گرا چیه ؟(تو سی شارپ یه نقطه کاره همرو میکرد :قهقهه:)

mazaher5723
شنبه 07 بهمن 1391, 20:11 عصر
-> واسه اشارگرهاست

MinusOne
شنبه 07 بهمن 1391, 20:47 عصر
میشه بیشتر توضیح بدین ؟

UfnCod3r
شنبه 07 بهمن 1391, 21:50 عصر
:: برای جدا کردن متغیر های استاتیک کلاس و تابع های استاتیک و فضای نام و ... هست !
. برای شی ای که شاخته شده !
<- برای شی ای از نوع اشاره گر .
اینم نمونه ::

class MyClass
{
public :
int a;
static int b;
}

MyClass::b = 0;
MyClass mc;
mc.a = 23;
MyClass* pmc = new MyClass;
pmc->a = 45;

hadi0x7c7
شنبه 07 بهمن 1391, 22:48 عصر
وقتی شما یک کلاس داری با یک سری ویژگی مثلا:
class Student {
private:
string name;
int stdNo;
public:
Student(string name,int stdNo) : name(name), stdNo(stdNo)
{
}

void print() {
cout << name << " " << stdNo << endl;
}

};
و شما یه سری شیء میسازی هم از نوع اشاره گر و هم از نوع مقداری :
Student* Hadi = new Student("Hadi Amiri", 882912);
Student OrdinaryHadi("Hadi Amiri", 882912);

واسه اونایی که با روش اول ساختی برای دسترسی به ویژگی ها و متد ها باید از <- استفاده کنی و واسه دوم از .

حالا فرض کن یه نفر دیگه دقیقا یه کلاس مثل مال تو ساخته و تو مجبوری از کلاس اون استفاده کنی ! برای این که اسم ها با هم قاطی نشن باید از :: یا scop resolution(?) استفاده کنی به این صورت که شما کلاست رو داخل یه namespace میزاری مثل این:

namespace University {
class Student {
private:
string name;
int stdNo;
public:
Student(string name,int stdNo) : name(name), stdNo(stdNo)
{
}

void print() {
cout << name << " " << stdNo << endl;
}

};


int main()
{
University::Student* Hadi = new University::Student("Hadi Amiri", 882912);
University::Student OrdinaryHadi("Hadi Amiri", 882912);

Hadi->print();
OrdinaryHadi.print();
system("pause");

}
}

کد نحوی استفاده و چرایی وجود :: رو میگه !
یا حق !