• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

Advanced 'Topics'

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
هدف از زدن اين تاپيک ارائه مثال يا طرح سوال هاي built-in هست

n تا سوال 1 آرش

فرض کنیم tst اسم کلاس این کار درسته ؟
کد:
	tst &obj= *new tst();

و آیا می تونیم بگیم برابر هست با :
کد:
   tst *obj2 = new tst() ;
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
n تا سوال 1 آرش
با اطلاعات محدود
این جوری می گی منو جو می گیره فکر می کنم خیلی بلدم

اما خب اینو بلدم
اگه منظورتون ریفرنس و اشاره گر
اینها با هم برابر نیستن چون هیچ وقت یه ریفرنس یا با یه اشاره گر یکی نیست درسته خیلی جاها شباهت دارن و می تونن به جای هم به کار برن ولی یکی نیست شما با یه اشاره گر آدرس ابجکت رو دارید ولی با یه ریفرنس خود ابجکت رو دارید

ولی اگه منظورتون روش ساخت آبجکت باشه هر دو ابجکت درست ساخته می شن البته بهتره برای اینکه بیشتر به هم شبیه باشن اشاره گر دومی رو ثابت در نظر بگیریم
کد:
tst * const obj2=new tst();
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
اوه ، دقيقا ، اما خودمونيم اين const تو C++ ارزشش بالا رفته
---
نتيجه يک تحقيق :
کد:
	tst *ptr = new tst() ;
	tst &rObj = *ptr;
	delete ptr ;
نتيجه من اينه که ديگه نبايد از rObj در ادامه استفاده کرد
*built-in
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
اشاره به تابع :
من در اين زمينه چيزي نميدونم جز در حد و حدود همين مثال :
کد:
class tst
{
	int x ;
   public:
   	tst(int k=0):x(k){}
      void show() {std::cout << x ;}
};
typedef void (tst::*sh)() ;
void main()
{
	sh ptr = &tst::show;
	tst obj ;
   (obj.*ptr)() ;
   getch();
}
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
اینکه اشاره گر به تابع نبود اشاره گر به عضو کلاس هست که حالا اون عضو کلاس یه تابع ولی اشاره گر به تایع این جوریه
کد:
int fun(int a,int b)
{
   return a+b;
} 

int main()
{
   int(* myptr)(int a,int b);
   myptr=fun;
   myptr(1,2);
   
}
 

Mehdi.T

کاربر فعال برنامه نویسی
کاربر فعال
تاریخ عضویت
30 سپتامبر 2005
نوشته‌ها
506
لایک‌ها
3
محل سکونت
In Search of Sunrise
و اين هم به عنوان آرگومان
کد:
int fun()
{
   cout << "in fun";
}
int (*myptr)() ; 
int caller(int(*myptr)())
{
    myptr() ;
}
int main()
{
    myptr = fun ;
    caller(fun);
getch();
   
}
 
بالا