مقالات آزاد راجب به خانواده ی C - عمومی

شروع موضوع توسط MnavidM ‏14 نوامبر 2005 در انجمن برنامه‌نویسی C و هم خانواده‌هایش

  1. MnavidM

    MnavidM Active Member

    ارسال‌ها:
    2,962
    تشکر شده:
    503
    امتیاز دستاورد:
    36
    سلام.

    در این تاپیک هر گونه مقاله ای راجب به خانواده ی C دارید , می توانید ارایه دهید .

    موفق باشید.
     
    نوشته شده توسط MnavidM در ‏14 نوامبر 2005
    briandddd از این پست تشکر کرده است.
  2. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    c/c++/c#

    C is a general programming language. Small compiler, lots of free compilers. Quite* easy to learn once you get the hang of the syntax. It is available on almost every platform you can think of. Note that there are 3 main variants of C: K&R, C89 and C99. Most compilers are C89.

    Quite كاملا

    C++ is an Object Oriented variant of C. If you are going the C++ route*, don't learn C first: you'll get into a lot of bad habits*. However, it is a big language with lots of new concepts*. If you are intending to write GUIs**, this is probably the way to go. It is not available on as many platforms as C. There is a standard library of algorithms STL which does all the standard stuff like linked lists, vectors etc. There are lots of free compilers about.

    Route مسير/habits عادات /concepts مفاهيم /

    C# is a Microsoft Language. It is big, slow, still being developed and a very bad excuse* for a faster processor. You can download the Express version from the microsoft site or get the CDs for £3. Don't try it on a system less than 1GHz 256Mb. It is XP based but will work on 2000. It is not a good first language.

    Excuse دستاويز /

    .
    Forgot to answer the actual question: which direction* you should go? It really depends* on what you intend* to do with it.

    Direction سمت / depend وابسته بودن / intend قصد داشتن /

    If you are going to stick* to engineering* type programs and programming controllers, stay with C. Lots of C experts out there if you have any questions.

    Stick ماندن،چسبيدن / engineering مهندسي /

    If you are going into developing GUIs or stuff for Mobile Phones, try C++. You can develop GUIs in C too but it is easier in C++ in that each control is an object. Some people use C++ like a lazy* variant of C i.e. they use // for comments and make declarations all over the place*: not just at the top of the routine. All C++ compilers will compile C. Lots of C++ experts in cyberspace** if you get stuck.

    Lazy تنبل / place مكان /

    If you wish to be tied* to Microsoft and .net, torture* yourself and have to change compilers every year or so, you could try C#. Most people are still learning C#: it is only about 4 years old. I'd wait another two years before trying C# - it is like Visual Basic when it started. A new compiler is released every year with new features and it is just too much for carbon based lifeforms.

    Tied علاقه ، گره خوردن / torture عذاب دادن /

    از ديكشنري تخصصي كامپيوتري **cyberspace n. 1. The advanced shared virtual-reality network imagined by William Gibson in his novel Neuromancer (1982). 2. The universe of environments, such as the Internet, in which persons interact by means of connected computers. A defining characteristic of cyberspace is that communication is independent of physical distance.

    **GUIاز ديكشنري تخصصي كامپيوتري
    graphical user interface:
    n. A visual computer environment that represents programs, files, and options with graphical images, such as icons, menus, and dialog boxes, on the screen. The user can select and activate these options by pointing and clicking with a mouse or, often, with the keyboard. A particular item (such as a scroll bar) works the same way for the user in all applications, because the graphical user interface provides standard software routines to handle these elements and report the user’s actions (such as a mouse click on a particular icon or at a particular location in text, or a key press); applications call these routines with specific parameters rather than attempting to reproduce them from scratch. Acronym: GUI

     
    آخرین ویرایش: ‏17 نوامبر 2005
    نوشته شده توسط saalek110 در ‏17 نوامبر 2005
    mojib712 از این پست تشکر کرده است.
  3. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    از آدرس:
    http://www.its.strath.ac.uk/courses/c/subsection3_3_1.html#SECTION0003100000000000000

    About C

    As a programming language, C is rather like Pascal or Fortran. Values* are stored in variables*. Programs are structured* by defining* and calling* functions*. Program flow* is controlled using loops*, if statements* and function calls. Input and output can be directed to the terminal or to files. Related* data can be stored *together* in arrays* or structures*.

    Values مقادير / variables متغيرها / structured سازمان يافتن / defining تعريف كردن / calling فراخواني / functions توابع / flow جريان / loops حلقه ها / statements اعلان ها / Related وابسته / together با هم ديگر / stored ذخيره سازي / arrays آرايه ها / structures ساختارها /

    Of the three languages, C allows* the most precise* control of input and output. C is also rather more terse* than Fortran or Pascal. This can result in short efficient* programs, where the programmer has made wise* use of C's range of powerful operators. It also allows the programmer to produce programs which are impossible* to understand.

    Allows اجازه دادن / precise دقيق / terse مختصر و مفيد،موجز / efficient موثر،كارآمد / wise خرد،راه / impossible غيرممكن /

    Programmers who are familiar with the use of pointers* (or indirect* addressing, to use the correct term) will welcome the ease of use compared* with some other languages. Undisciplined* use of pointers can lead* to errors which are very hard to trace*. This course only deals with the simplest applications of pointers.

    Pointers اشاره گرها / indirect غير مستقيم / compared در مقايسه با / Undisciplined ترتيب داده نشده / lead منتهي شدن / trace ردپا، اثر، دنبال كردن / deals سر و كار داشتن /

    It is hoped that newcomers* will find C a useful and friendly language. Care must be taken in using C. Many of the extra facilities which it offers can lead to extra types of programming error. You will have to learn to deal with these to successfully make the transition to being a C programmer.

    Newcomers تازه وارد / facilities امكانات / transition گذار /

    .
     
    نوشته شده توسط saalek110 در ‏17 نوامبر 2005
    mojib712 از این پست تشکر کرده است.
  4. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    از آدرس:
    http://www.its.strath.ac.uk/courses/c/subsubsection3_3_4_1.html#SECTION0003410000000000000

    Common C
    Until recently there was one dominant* form of the C language. This was the native* UNIX form, which for historical* reasons is known as either Bell Labs C, after the most popular compiler, or K. &R. C, after the authors of the most popular textbook on the language. It is now often called "Classic C"

    Dominant غالب / native محلي / historical تاريخي /

    .
    از آدرس:
    http://www.its.strath.ac.uk/courses/c/subsubsection3_3_4_2.html#SECTION0003420000000000000

    ANSI C
    The American National Standards Institute defined a standard for C, eliminating much uncertainty about the exact* syntax of the language. This newcomer, called ANSI C, proclaims* itself the standard version of the language. As such it will inevitably* overtake*, and eventually replace common C.

    Exact عيني، صحيح / proclaims اعلان كردن / inevitably بناچار / overtake سبقت گرفتن /

    ANSI C does incorporate* a few improvements* over the old common C. The main difference is in the grammar of the language. The form of function declarations*’** has been changed making them rather more like Pascal procedures.

    Incorporate متحد كردن،داخل كردن،ثبت كردن / improvements بهسازي / declarations اعلام /

    This course introduces* ANSI C since it is supported* by the SUN workstation* compilers. Most C programming texts are now available in ANSI editions.

    Introduces نشان دادن / supported حمايت شدن / workstation جدول كار /

    از ديكشنري تخصصي كامپيوتري**declaration n. A binding of an identifier to the information that relates to it. For example, to make a declaration of a constant means to bind the name of the constant with its value. Declaration usually occurs in a program’s source code; the actual binding can take place at compile time or run time. See also bind, constant, data declaration, data type, identifier, instruction, routine, type declaration, variable.
    .
     
    نوشته شده توسط saalek110 در ‏17 نوامبر 2005
    mojib712 از این پست تشکر کرده است.
  5. stranger_in_rain

    stranger_in_rain Member

    ارسال‌ها:
    183
    تشکر شده:
    27
    امتیاز دستاورد:
    16
    پیمایش inorder درخت به وسیله ی Stack ( غیر بازگشتی )

    درخت های دودویی به وسیله ی الگوریتم های بازگشتی (Recursive) نوشته میشوند، اما راه هایی وجود دارند که این پیمایش ها را با روش هایی مانند Stack انجام داد NON RECURSIVE .

    کد (Text):

    void inorder ( root )
    {

    p = root;
    while (TRUE)
    {
    while ( p!=NULL )
    {
    push(p);
    p=p->left;
    }//end of while NULL
    if (empty-stack()) exit(0);
    p=pop();
    cout<<p->info;
    p=p->right;
    }//end of while TRUE
    }
     
    در این روش با استفاده از stack ( پشته ) یک درخت دودویی (Binray) به طور کامل پیمایش میگردد.

    توضیح برنامه ی بالا :

    در ابتدا متغیر P برابر root که همان ریشه یا اولین گره ی درخت است قرار میگیرد. سپس حلقه ی اول یک حلقه ی بی نهایت است که تنها در صورت اجرای دستور exit از این حلقه خارج میشویم. در ابتدای حلقه ی دوم شرط پوچ نبودن P چک میشود. سپس در ابتدای حلقه P به بالاترین محل پشته PUSH میشود و سپس P برابر با فرزند سمت چپ خود قرار میگیرد که در صورت NULL بودن از حلقه خارج میشود و میرود که پس از چک کردن اینکه درخت به طور کلی پوچ نیست با دستور POP ، مقدار P را از پشته بازخوانی کرده و آن را چاپ کند. سپس P برابر فرزند سمت راست خویش قرار میگیرد.
    شرط خروج از حلقه ی اول خالی بودن درخت است که توسط تابعی دیگر باید امتحان گردد.

    توجه : این کد به صورت شبه C بوده و ممکن است بعضی از دستورات آن به طور مستقیم در C اجرا نگردندو هدف مفهوم کلی Algorithm است.
     
    آخرین ویرایش: ‏1 مارس 2006
    نوشته شده توسط stranger_in_rain در ‏1 مارس 2006
    mojib712 از این پست تشکر کرده است.
  6. stranger_in_rain

    stranger_in_rain Member

    ارسال‌ها:
    183
    تشکر شده:
    27
    امتیاز دستاورد:
    16
    پیمایش درخت به روش بازگشتی

    درخت های Binray پس از اینکه به صورت استاندارد خودشان پر شدند به روش های گوناگون قابل پیمایش هستند که این روش های گوناگون میتواند سبب sort شدن ( مرتب ) شدن داده های موجود در درخت Binary شود.

    انواع روش های پیمایش : inorder - میان ترتیب ، preorder - پیش ترتیب ، postorder - پس ترتیب

    روش INORDER :


    کد (Text):


    void inorder( treepointer p )

    {

    if (p)
    {
    inorder( p->left_child);
    cout<<p->data;
    inorder(p->right_child);
    }
    }

     
    روش PREORDER :

    کد (Text):


    void preorder( treepointer p )

    {

    if (p)
    {
    cout<<p->data;
    preorder( p->left_child);
    preorder(p->right_child);
    }
    }

     
    روش POSTORDER :

    کد (Text):

    void postorder( treepointer p )

    {

    if (p)
    {
    postorder( p->left_child);
    postorder(p->right_child);
    cout<<p->data;
    }
    }

     
     
    نوشته شده توسط stranger_in_rain در ‏1 مارس 2006
    mojib712 از این پست تشکر کرده است.
  7. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    از كتاب هربرت شيلد:


    C vs. C++
    Before concluding this chapter, a few words about C++ are in order. Newcomers are sometimes
    confused about what C++ is and how it differs from C. In short, C++ is an object-oriented
    programming language that was built upon the foundation of C. In general terms, C is a subset of
    C++, or conversely, C++ is a superset of C.
    In general, you can use a C++ compiler to compile a C program. In fact, today most compilers
    handle both C and C++ programs. Thus, most programmers will use a C++ compiler to compile
    their C code! However, since C++ was built upon the 1989 C standard, you must restrict your C
    code to the features defined by that standard (which are the features described in Part One of this
    book).
    There is one thing that you must be careful about when using a C++ compiler to compile a C
    program: the file extension. By convention, C programs use the .C extension. C++ programs
    use .CPP. Don't accidentally give your C program a .CPP extension. Differences between the two
    languages might prevent a valid C program from being compiled as if it were a C++ program. By
    specifying the .C extension, you are telling the C++ compiler to perform a ''C compile."​

    به طور خلاصه ، سي++ يك زبان شي گراست كه بر اساس سي ساخته شده.
    به طور كلي سي ، زيرمجموعه اي از سي++ است و سي++ مافوق سي است.
    در كل،شما مي توانيد يك كامپايلر سي++ را براي كامپايل يك برنامه سي بكار بريد.
    در حقيقت امروزه بيشتر كامپايلرها ، هم سي و هم سي++ را تحت پوشش قرار مي دهند. بنابراين بيشتر برنامه نويس ها يك كامپايلرسي++ بكار مي برند براي كامپايل برنامه هاي سي.
    چون سي++ بر اساس سي استاندارد (1989) ساخته شد، شما بايستي كدهاي سي خود را با آن استاندارد هماهنگ كنيد.(در فصل 1 كتاب شرح داده شده.)
    هنگامي كه داريد يك برنامه سي را با كامپايلر سي++ كامپايل مي كنيد بايد به يك نكته توجه داشته باشيد:
    پسوند فايل سي دات سي .c است و سي++ ، دات سي پي پي .cpp
    با دادن پسوند شما داريد به كامپايلر مي گوييد كه چه نوع برنامه اي مدنظر داريد . سي ، يا سي++.
     
    نوشته شده توسط saalek110 در ‏3 آوریل 2006
    mojib712 از این پست تشکر کرده است.
  8. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    سلام.
    من سي زياد بلد نيستم و نمي توانم راجع به مقاله زير نظر بدهم.
    ولي از اين مقاله خوشم آمد. چون به درك سي كمك مي كند.
    اميدوارم مفيد باشد.

    منبع:
    http://sci.cse.shirazu.ac.ir/new/viewtopic.php?t=1699&view=next&sid=a84e935f448356a5da9057b26be168e4
    =================================

    صنعت نرم* افزار راه درازی از زمان اختراع زبان C تا کنون پیموده است. به وسیله ++C تعداد زیادی مفاهیم جدید به زبان C افزوده شد. اما سازگاری با گذشته C در آن ادامه یافت ، شامل سازگاری با تقریباً تمام ضعفهای طراحی اصلی زبان C .

    تلاشهای زیادی برای برطرف ساختن آن ضعفها تاکنون صورت گرفته است اما در پی پا فشاری بر حفظ سازگاری با گذشته خنثی شده است. در ضمن هر دوی C و ++C دستخوش یک رشد پیوسته خصوصیات جدید شده *اند.

    این خصوصیات جدید باید به دقت و بدون نیاز به بازنویسی کد قدیمی به ساختار موجود خورانده شود. نتیجه نهایی بسیار پیچیده است ؛ C استاندارد تقریباً 500 صفحه است و ++C استاندارد حدود 750 صفحه ! در زمینه کامپایلر های ++C واقعیت این است که تعداد اندکی از کامپایلر های موجود ،استاندارد این زبان را به صورت مؤثر و کامل پیاده سازی می کنند.

    برنامه نویسان ++C گرایش می* یابند که در جزایر خاصی از زبان برنامه بسازند ، از بعضی خصوصیات ماهرانه بهره می گیرند در حالی که از به کار بردن بسیاری از خصوصیات دیگر اجتناب می کنند. با وجود اینکه کد ++C از یک کامپایلر به کامپایلر دیگر قابل حمل است می*تواند به سختی از برنامه نویسی به برنامه نویس دیگر منتقل شود.

    توانایی بزرگ ++C این است که می*تواند تعداد زیادی سبک های اصلی برنامه*نویسی را پشتیبانی کند. اما در کاربرد طولانی مدت ، سبکهای دارای اشتراک یا تناقض یک مانع و در نتیجه وقت گیرند.

    ناامید کننده است که زبانی چنین قدرتمند ، اعمال پایه*ا ای مانند تغییر اندازه آرایه*ها و الحاق رشته*ها را انجام نمی*دهد. البته ++C توانایی برنامه نویسی قدرتمند برای پیاده سازی آرایه های قابل تغییر اندازه و رشته ها را فراهم می*کنند (مانند نوع بردار در STL ) . اما به هرحال چنین خصوصیات بنیادی ، بایستی جزء قسمتهای زبان باشد. آیا قدرت و قابلیتهای ++C ، قابل گسترش ، طراحی مجدد و پیاده*سازی به یک زبان ساده وارتگنال (منحصر به فرد و مستقل) و کاربردی می* باشد؟ آیا تمامی آنها می* تواند داخل بسته* ای قرار گیرد که برای کامپایلرنویسان به آسانی قابل پیاده*سازی صحیح باشد و کامپایلرها را قادر کند که به نحوی کارا ، کدهای بهینه شده و پرتکاپو ایجاد کند؟

    فناوری پیشرفته کامپایلر به نقطه*ای رسیده است که خصوصیاتی از زبان که به منظور جبران کردن ناتوانی فناوری ابتدایی کامپایلر وجود دارند ، می*توانند حذف شوند. (مثالی ازاین نمونه می*تواند واژه کلیدی 'register' در C باشد ، مثالی ظریفتر ماکروی پیش*پردازنده در C است) . ما می*توانیم به فناوری پیشرفته*ی بهینه سازی کامپایلر اعتماد کنیم تا دیگر به خصوصیاتی از زبان که برای دست یافتن به کیفیت کد قابل*قبول (جدای از کامپایلرهای ابتدائی) لازم است نیاز نداشته باشیم.
     
    نوشته شده توسط saalek110 در ‏2 نوامبر 2006
    .ir و mojib712 از این پست تشکر کرده اند.
  9. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    منبع:
    http://csharpcomputing.com/Tutorials/faq.htm
    --------------------------------------------------------

    How fast is a .NET application compared to C/C++?
    Many C#/VB.NET applications will run 10-30% slower than their unmanaged counterparts. The main performance hit in managed applications comes from a need to load the .NET runtime and then compile the application on the fly before actually running it. Currently it is not uncommon to wait up to 30 seconds for an ASP.NET page to load on 1.6Ghz 512MB Dell with 500 Mhz Rambus memory. Additional performance penalty occurs when ActiveX and COM components are accessed from .NET. Due to the complex marshalling protocol, it may take up to 80 CPU cycles to execute a function from an unmanaged component. As developers learn .NET optimization tricks and JIT compiler optimization becomes more efficient, performance of .NET applications will become comparable to C++.

    بحث راجع به مقایسه سرعت اجرای برنامه ساخته شده با وی بی دات نت و سی شارپ است
    با زبان سی و سی پلاس.
    که گفته شده ده تا سی درصد کدهای
    Unmanaged
    سریعتر اجرا می شوند. و دلیل آن این است که کدهای
    Managed
    نیاز به لود شدن دات نت ران تایم دارند.
     
    آخرین ویرایش: ‏23 ژانویه 2007
    نوشته شده توسط saalek110 در ‏23 ژانویه 2007
    mojib712 از این پست تشکر کرده است.
  10. saalek110

    saalek110 Active Member

    ارسال‌ها:
    2,428
    تشکر شده:
    1,267
    امتیاز دستاورد:
    36
    منبع :
    http://www.ir-microsoft.com/index.php?option=com_content&task=view&id=56&Itemid=39
    =======================================================

    مقايسه خواص عمومي يك كلاس در C++ و C#

    قبل از بررسي تفاوت بين كلاسها بين C++ و C# ابتدا خاصيت هاي عمومي يك كلاس را بررسي كرده سپس به بررسي تفاوت بين اين دو زبان قدرتمند خواهيم پرداخت...

    قبل از بررسي تفاوت بين كلاسها بين C++ و C# ابتدا خاصيت هاي عمومي يك كلاس را بررسي كرده سپس به بررسي تفاوت بين اين دو زبان قدرتمند خواهيم پرداخت.

    تعريف. كلاس در حالت ساده مجموعه اي از خواص(attributes) و روش ها (methodes) است كه در رابطه با هم هدف مشتركي را دنبال مي كنند و خدماتي را ارائه مي كنند. البته اين تعريف در حد يك تعريف علمي مي باشد ولي ذكر اين نكته ضروري است كه اكثر تعاريف در شي گرايي در طبيعت وجود دارد و در ساده ترين حالت براي تعريف يك كلاس مي توان از تعريف انسان استفاده كرد كه اين بحث در اين مقاله نمي گنجد. در هر حال ما به تعريف فوق اكتفا كرده و بحث را ادامه مي دهيم.

    خواص ها و روش ها كه در تعريف كلاس ارائه شد مي تواند نحوه دسترسي متفاوتي مانند public و private و protected داشته باشد كه براي برنامه نويسان C++ نيازي به توضيح نيست.

    تفاوت در تعريف يك كلاس:

    نانچه در مقاله لايه ها در C# نيز اشاره شد يك كلاس در يك برنامه C# در داخل يك لايه تعريف خواهد شد(اجباري نيست). تعريف يك كلاس در C# تفاوتهايي با C++ دارد كه سعي خواهيم كرد اين تفاوت ها را با چند مثال توضيح دهيم.

    فرض كنيد كلاس زير در C++ تعريف شده است كه اين كلاس را به يك كلاس C# تبديل خواهيم كرد.

    کد (Text):

    // Test.h

          class CTest{

                private:

                      int   m_at1;

                      int   f1();

                public:

                      float m_at2;

                      int   f2();

                            CTest();

                            ~CTest();

          };

         

          // Test.cpp

          #include "test.h"

          CTest::CTest(){

                m_at1 = 0;

                m_at2 = 0.0;

          }

          CTest::~CTest(){

                // cout << "destructor call";

          }

          int CTest::f1(){

                      return m_at1;

          }

          int CTest::f2(){

                return m_at1+(int)m_at2;

          }
     


    تفاوت اول:

    بر خلاف C++ در C# تعريف و نحوه عملكرد يك تابع يا Method در خود تعريف كلاس قرار داده مي شود. در C++ غالبا تعريف كلاس در فايل .h و بدنه توابع در فايل .cpp قرار مي گرفت. البته ذكر اين نكته ضروري است كه مي توان همين عمل را در .h نيز قرار داد ولي در يك برنامه بزرگ اين عمل كنترل برنامه را از دست برنامه نويس خارج كرده و همچنين مشكلات ديگري را براي برنامه نويسان ايجاد مي كند كه برنامه نويسان C++ با اين مشكلات آشنا هستند.



    تفاوت دوم:

    بر خلاف C++ در C# يك دسته از متغييرها را نمي توان بصورت public يا private و ... تعريف كرد و براي هر متغيير بايد نحوه دسترسي به آن نيز مشخص شود.



    تفاوت سوم:

    بر خلاف C++ در C# تابع destructor وجود ندارد و خود C# مسئول از بين بردن يك شي مي باشد كه اين از بين بردن با توجه به محدوده تعريف اين شي انجام مي شود. البته تعريف destructor وجود دارد ولي نمي توان destructor را فراخواني كرد . در C++ فراخواني Destructor با استفاده از عملگر delete قابل انجام بود ولي چون C# مديريت object ها را خود بعهده مي گيرد شي ايجاد شده نميتواند توسط برنامه خراب شود. اين مطلب در مقالات بعدي مورد بررسي قرار خواهد گرفت.

    با توجه به تفاوتهاي ذكر شده مي توان اين كلاس را به صورت زير براي يك كلاس C# ارائه كرد.

    کد (Text):

     // Test.cs

          using System;

          namespace NS

          {

                publicclass CTest

                {

                      privateint   m_at1;

                      public  float m_at2;

                      privateint   f1()

                      {

                                  return m_at1;

                      }

                      public  int   f2()

                      {

                                  return m_at1+(int)m_at2;

                      }

                      public CTest()

                      {

                            m_at1 = 0;

                            m_at2 = 0.0f;

                      }

                      ~Test()

                      {

                            // Console.WriteLine("destructor call");

                      }

                }

          }
     


    ايجاد يك كلاس در ++ و #

    در موقع استفاده از يك كلاس اگر از default constructor براي ايجاد يك كلاس استفاده مي شود در C# بايد constructor بصورت void فراخواني شود ( مانند توابع void معمولي)

    به مثال زير دقت كنيد.

    کد (Text):

     // C++ code

                CTest            *a;

                a = new CTest;

     

                // C# Code

                CTest             a;

                a = new CTest();
     
    ذكر اين نكته ضروري است كه در C# وقتي كلاسي تعريف مي شود در واقع اشاره گر به آن كلاس معرفي مي شود بنابراين با تعريف CTest a كلاسي از CTest ايجاد نمي شود و فقط يك اشاره گر از CTest تعريف مي شود و براي ايجاد يك كلاس استفاده از عملگر new اجباري است.

    ولي در C++ تعريف CTest a به منزله ايجاد يك كلاس و فراخواني Default Constructor مي باشد.

    سالک: من فقط رعایت امانت در نقل قول کردم. خودتان بررسی و امتحان کنید.
     
    آخرین ویرایش: ‏18 آوریل 2007
    نوشته شده توسط saalek110 در ‏18 آوریل 2007
    arash_j13 از این پست تشکر کرده است.
  11. mhs377

    mhs377 New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    با سلام
    یه سوال در مورد c++ داشتم
    من قطعه کد زیر ر و تو borland c++ مینویسم جواب 311 میده
    تو codeBlock می نویسم 223 میده
    تو g++ هم 313 میده
    میخواستم بدونم کامپیلر دیگه ای هم هست که جواب دیگه ای بده؟

    کد (Text):

    [LEFT][FONT=Arial][SIZE=3]include <iostream>[/SIZE][/FONT]
    [FONT=Arial][SIZE=3]   [/SIZE][/FONT][FONT=Arial][SIZE=3]using namespace std;[/SIZE][/FONT]
    [FONT=Arial][SIZE=3]   [/SIZE][/FONT][FONT=Arial][SIZE=3]int main(){[/SIZE][/FONT]
    [FONT=Arial][SIZE=3]       [/SIZE][/FONT][FONT=Arial][SIZE=3]int a = 1;[/SIZE][/FONT]
    [FONT=Arial][SIZE=3]       [/SIZE][/FONT][FONT=Arial][SIZE=3]cout << ++a << a++ << a;[/SIZE][/FONT]
    [FONT=Arial][SIZE=3]       [/SIZE][/FONT][FONT=Arial][SIZE=3]return 0;[/SIZE][/FONT][/LEFT]
    [FONT=Arial]   }[/FONT]
     
     
    نوشته شده توسط mhs377 در ‏28 ژانویه 2009
  12. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,291
    تشکر شده:
    10,230
    امتیاز دستاورد:
    113
    متاسفانه در زبان C و ++C استاندارد مشخصی برای ترتیب تفسیر اپراتور ها وجود نداره :
    کد (Text):

    Except where noted, the order of evaluation of operands of individual operators and subexpressions of
    individual expressions, and the order in which side effects take place, is unspecified."
      -- ISO/IEC 14882, Section 5.0.4
     
    کامپایلر بورلند کد را از راست به چپ پردازش کرده (همانند کامپایلر مایکروسافت)
    کامپایلر codeBlock کد را از چپ به راست پردازش کرده.
    کامپایلر ++g هم با یک شیوه غیر عادی کد را از وسط و به سمت چپ پردازش کرده.

    اگر کامپایلر دیگری با شیوه غیر عادی کد را از وسط و به سمت راست پردازش کند، عدد 312 ایجاد می شود، البته
    کامپایلری که چنین رفتاری داشته باشد نمی شناسم.
     
    نوشته شده توسط the_king در ‏28 ژانویه 2009

به اشتراک بگذارید