-
یک کد جالب
سلام
به نظر شما این کد درسته یا نه؟
غلط به نظز میرسه اما درسته !
این یه اشاره گر به تابع هستش که یه اشاره گر به تابع رو برمیگردونه. این کارو سه بار انجام میده.
یه تابه به نام foo بسازید بعدش عملگر پرانتز رو براش سربارگذاری کنید که یه اشاره گر به ارجاع this رو برگردونه با این روش هرچند بار بخواین پرانتزمیتونین بزارین.
کد:
#include <stdio.h>
#include <iostream>
using namespace std;
class foo{
public:
foo& operator () (){
putchar('*');
return *this;
}
};
int main(){
foo()()()()()();
getchar();
}
خروجی
-
این طوری فکر کنم که از سمت چپ به راست پرانتز ها رو اجرا میکنه درسته ؟
چون پرانتز اولی یه ارجا از شی رو بر میگردونه و پرانتز دومی واسه این ارجا عمل میکنه و .... به همینطور
آیا درسته این تحلیل یا اینکه به شکل دیگه ای انجام میشه
-
سلام
نه فکر کنم به ترتیب اجرا میکنه البته به خاطر اجرای این کد
کد:
#include <stdio.h>
#include <iostream>
class foo{
public:
foo(){};
foo& operator () (int i){
cout<<i;
return *this;
}
};
int main(){
foo()(1)(2)(3)(4)(5);
getchar();
}
خروجی
-
خوب درسته دیگه از چپ به راست به ترتیب اجرا میکنه
اولی foo() که سازنده هست و کاری نمیکنه
بعد foo(1 )اجرا میشه با مقدار بازگشتیش (2)اجرا میشه و............
-
تو سیستم من که اجرا نشد.
ولی میشه درستش کرد.