آقا اين كد به c هستش يا ++c؟:46:
Printable View
آقا اين كد به c هستش يا ++c؟:46:
اینطور که من دیدم توی کد از کلاس استفاده شده بود.....به ++c نوشته شده !نقل قول:
خب پس ميشه يكي اينو به C هم ترجمه كنه ما هم بفهميم؟
ممنون ميشم.
هيشكي نيست جواب ما رو بده
من فکر کردم مشکلتون حل شده ......الان کدتون رو میبینم !نقل قول:
پس خانوم مهدي زاده چي شد؟
توی خود کد براتون یه چیزایی نوشتم ( در حدی که بلد بودم !).....امیدوارم بدردتون بخوره :
کد:
#include <iostream>
using namespace std;
class Counter
{
public:
Counter();
Counter(int);
~Counter() {}
int GetVal() { return itsVal; }
const Counter operator++();// hatman lazem nist refrens bargardoone...vaghti refrenc barmigardoonim
// ke bekhaim amaliat rooye sheiemoon anjam beshe na inke rooye copyish too stack anjam beshe va bad oon ro 2bare tooye
// sheiemoon copy konim ....ama inja moshkeli ijad nemishe ( albate bazi oghat hatman bayad refrenc
//bargardoone vagarna moshkel saz mishe )
const Counter operator++(int theFlag);
private:
int itsVal;
};
Counter::Counter():
itsVal(0)
{}
Counter::Counter(int val):
itsVal(val)
{}
const Counter Counter::operator++()// miad va ozve khosoosie( itsVal ) sheye jari ( this ) ro ++ mikone va sheie jari ro
//barmigardoone ....zamani farakhani mishe ke benevisid ++i....shoma fekr kon operator ++ yek function ast dar in soorat mish :
// i=functoion(); vaghti minevisid ++i aval function ( manzooram hamoon operatore ++ e ke overload shode ) farakhani mishe
// bad return oon tooye i gharar migire ...i ham ke hamoon sheie jarimoone dige ....
{
++itsVal;
return * this;
}
const Counter Counter::operator++(int theFlag)// faghat mitoonam begam vaghti farakhani mishe ke benevisid i++...ama
// inke daghighan che etefaghi miofte nemidoonam !!!!
{
Counter temp(* this);
++itsVal;
return temp;
}
//listing operator overloading
int main()
{
Counter i;
cout <<"i/value = " <<i.GetVal()<<endl;
++i;
cout <<"i/++i/value = " <<i.GetVal()<<endl;
i++;
cout <<"i/++i/i++/value = " <<i.GetVal()<<endl;
Counter a;
cout <<"i/++i/i++/a/value = " <<a.GetVal()<<"& i = "<<i.GetVal()<<endl;
a = ++i;
cout <<"i/++i/i++/a/a = ++i/value = " <<i.GetVal()<<"& a = "<<a.GetVal()<<endl;// ; nadasht !!!! ...<<a.GetVal<< parantez () nadasht !
a = i++;
cout <<"i/++i/i++/a/a = i++/a = ++i/value = " <<i.GetVal()<<"& a = "<<a.GetVal()<<endl; // a.GetVal parantez nadasht !
return 0;
}
راستش فکر نمیکنم بشه این کد رو به زبان C نوشت .....چون علاوه بر کلاس ( که توی c نداریم ....البته میشه با استراکچر شبیه سازیش کرد ولی خوب استراکچر امکانات کلاس رو نداره ) اپراتور ++ اور لود ( overload ) شده که توی c از این کارا نمیشه کرد ( راستش اگرم بشه من بلد نیستم !!!)نقل قول:
خب پس ميشه يكي اينو به C هم ترجمه كنه ما هم بفهميم؟