نمایش نتایج 1 تا 4 از 4

نام تاپیک: یک سوال در مورد سازنده ها

  1. #1

    Question یک سوال در مورد سازنده ها

    سلام خدمت اساتید محترم
    پاراگراف زیر را که می خوانید در مورد سازنده ها در C++‎ است.
    سازنده پیش فرض که برای مقداردهی اولیه ایجاد می شود به داده های عضو کلاس مقداراولیه نمی دهد ولی برای هرداده عضوی که شیئی از کلاس دیگر است (و هیچ مقداردهی ای توسط برنامه نویس نشده) سازنده پیش فرض را احضار می کند.

    سوال:
    آیا داده هایی که تعریف می کنیم (متغیر) مثلاً متغیر name در زیر
    string name;
    - مثل شیئی که از یک کلاس ایجاد می کنیم - آیا داده ی name شیئی از کلاس string می باشد؟
    اگر چنین است پس
    من برداشتی که از متن بالا در مورد سازنده ها کرده ام این است که وقتی متغیر name یک داده ی عضو از کلاسی است که ما تعریف کرده ایم و به صورت صریح توسط ما مقدار دهی نشده است توسط سازنده پیش فرض کلاس ما به صورت ضمنی سازنده ی پیش فرض در این شیء(داده ی name) از کلاس string را احضار می کند و توسط آن داده ی name مقدار دهی (تهی) می شود.
    آیا برداشت من درست می باشد؟
    با تشکر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: یک سوال در مورد سازنده ها

    اول اينكه سازنده اي از كلاس باعث ساخته شدن يك متغير از يك كلاس نميشود و شما بايد بنا به نياز هاي نرم افزار بصورت تحميلي اين خواسته را از سازنده بخواهيد.
    دوما اينكه هر متغيير كه داخل كلاس تعريف ميشود فقط متغيير بوده و تنها ارتباط آن با كلاس عضويت ان هست كه بطور منطقي باعث كنترل اين متغيير توسط كلاس ميشود كه به نوبه خود جزو قرار داد هاي كلاس هست. يعني اينكه پروتكل تعريف در كلاس به اين شكل طراحي شده است كه كامپايلر داخل برنامه به همراه كلاس كدهاي اضافي را براي كنترل اعضاي كلاس در نظر ميگيرد.

  3. #3

    نقل قول: یک سوال در مورد سازنده ها

    با تشکر از جوابتون
    ولی من نگفتم که یک سازنده باعث ساختن یک متغیر از کلاس می شود اصلاً یک سازنده وظیفه مقدار دهی به متغیر های تعریف شده در کلاس رادارد. بعد اینکه اگر به صورت تحمیلی از نرم افزار نخواهیم این کار را انجام دهد خود کامپایلر یک سازنده پیش فرض تعریف می کند. چون توی کتابی خونده بودم که سازنده پیش فرض (سازنده ای که توسط کامپایلر به صورت ضمنی تعریف شده یا سازنده ای که توسط برنامه نویس تعریف شده ولی هیچ پارامتری ندار(هیچ آرگومانی از سوی کد مشتری دریافت نمی کن)) سازنده پیش فرض را برای تمام داده های عضو کلاس(متغیر هایی که در درون کلاس تعریف شده اند) احضار می کند. من فکر کردم متغیر هایی مثل string و integer اشیایئی هستند که از کلاس های استاندارد C++‎ ایجاد شده و شیئی از کلاس دیگر هستند پس حالا که توسط ما مقدار نگرفته اند کامپایلر C++‎ سازنده پیش فرضی که در درون کلاس مثلاً string (کلاس استاندارد) تعریف شده را احضار می کند که باعث گرفتن یک مقدار تهی توسط این سازنده می شود یا مقدار 0 برای متغیر های از نوع int و....

    سوالم را که درباره شیء بودن متغیری مثل name1 از نوع string پرسیده بودم باید بگم که جواب سوالم را گرفتم . یعنی متغیر هایی که تعریف می کنیم مثلاً همین متغیر name همه شیئی هست از کلاسی که تعریف شده. مثلاً متغیر name شیئی از کلاس string است.
    باز هم متشکرم

  4. #4
    کاربر دائمی آواتار m.soleimani
    تاریخ عضویت
    دی 1386
    محل زندگی
    اصفهان
    پست
    639

    نقل قول: یک سوال در مورد سازنده ها

    نقل قول نوشته شده توسط mustafa shujaee مشاهده تاپیک
    سلام خدمت اساتید محترم
    پاراگراف زیر را که می خوانید در مورد سازنده ها در C++‎‎‎ است.
    سازنده پیش فرض که برای مقداردهی اولیه ایجاد می شود به داده های عضو کلاس مقداراولیه نمی دهد ولی برای هرداده عضوی که شیئی از کلاس دیگر است (و هیچ مقداردهی ای توسط برنامه نویس نشده) سازنده پیش فرض را احضار می کند.

    سوال:
    آیا داده هایی که تعریف می کنیم (متغیر) مثلاً متغیر name در زیر
    string name;
    - مثل شیئی که از یک کلاس ایجاد می کنیم - آیا داده ی name شیئی از کلاس string می باشد؟
    اگر چنین است پس
    من برداشتی که از متن بالا در مورد سازنده ها کرده ام این است که وقتی متغیر name یک داده ی عضو از کلاسی است که ما تعریف کرده ایم و به صورت صریح توسط ما مقدار دهی نشده است توسط سازنده پیش فرض کلاس ما به صورت ضمنی سازنده ی پیش فرض در این شیء(داده ی name) از کلاس string را احضار می کند و توسط آن داده ی name مقدار دهی (تهی) می شود.
    آیا برداشت من درست می باشد؟
    با تشکر
    ببین وقتی شما یه متغیر تعریف می‌کنی کامپایلر با روش‌های مخصوص به خودش می‌یاد و به اون یه مقدار اولیه می‌ده برای مثال تعریف یه متغیر از نوع int باعث می‌شه که کامپایلر کدی را که برای مقدار دهی و شناسایی چیزی که الان وجود داره فراخوانی کنه, پس تا چیزی وجود نداشته باشه مقدار دهی هم نمی‌شه به مثال بالا دقت کن هیچ کامپایلری نمی‌یاد برای متغیر int به نام i برای مثال که دستور ساخته شدنش صادر نشده حافظه بگیره درسته خب این در مورد کلاس هم صدق می‌کنه و محتویات یه کلاس حالا به هر جا اشاره داشته باشن یا هر موجودیت خاصی باشن تا زمانی که سازنده اون کلاس فراخوانی نشه وجود خارجی ندارن و برای همین مقدار دهی نمی‌شن. موفق باشی

قوانین ایجاد تاپیک در تالار

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