Copy Constructor در سی پلاس پلاس

در این قسمت تیم کدگیت را با آموزش Copy Constructor در سی پلاس پلاس همراهی کنید. در این آموزش به معرفی Copy Constructor می‌پردازیم. بعد از معرفی این تابع، دلیل استفاده آن را توضیح می‌دهیم و در آخر چند مثال را پیاده سازی میکنیم. پیش نیاز این آموزش شامل موارد زیر است:

  1. شی گرایی در سی پلاس پلاس
  2. Constructor در سی پلاس پلاس
  3. توابع در سی پلاس پلاس

Copy Constructor در سی پلاس پلاس

در آموزش گذشته در مورد Constructor و انواع آن صحبت شد. همانطور که گفتیم Constructor در واقع یک شی را می‌سازد و هنگام ساخت شی این تابع صدا زده می‌شود. اما یک تابع دیگری نیز وجود دارد به نام Copy Constructor که مانند Constructor هنگام ساخت شی صدا زده می‌شود اما در باطن تفاوت‌هایی نیز دارد. تابع Copy Constructor موقعی صدا زده می‌شود که بخواهیم یک شی را با استفاده از شی دیگر ایجاد کنیم. برای شفاف سازی این مطلب مثالی را خواهیم زد.

مثال Copy Constructor در سی پلاس پلاس

Copy Constructor در یک کلاس را به صورت زیر تعریف می‌کنند:

تعریف بالا شبیه به Constructor است اما ورودی که از جنس Refrence خود شی باشد Copy Constructor و Constructor را از هم جدا می‌کند. در آموزش‌های گذشته کلاسی به نام Point ایجاد کرده و در Constructor آن دو متغیر x و y را مقدار دهی کردیم. با استفاده از همان کلاس Copy Constructor نیز خواهیم نوشت. کد این مثال به صورت زیر است:

در کد بالا یک کلاس Point نوشتیم که از Copy Constructor استفاده می‌کند. در این کد همانطور که میبینید Copy Constructor یک ورودی از جنس Point گرفته و متغیرهای خود را از آن ورودی ساخته است. خروجی کد بالا به صورت زیر است:

Default Copy Constructor

با توجه به صحبت‌هایی که شد هنگام ساخت کپی یک شی از Copy Constructor استفاده می‌شود. اما سوالی که مطرح است جگونه رفتار کردن سی پلاس پلاس در موقع ننوشتن این تابع است؟ در جواب باید گفت سی پلاس پلاس به صورت پیش فرض از Default Copy Constructor استفاده می‌کند. در تصویر زیر نحوه رفتار سی پلاس پلاس در صورت استفاده از Default Copy Constructor را نشان می‌دهد.

Copy Constructor در سی پلاس پلاس

اما اگر یک Copy Constructor توسط ما نوشته شود میتواند دیاگرام زیر را داشته باشد:

Copy Constructor در سی پلاس پلاس

پسورد: www.codegate.ir

 

دسته : Object Oriented in Cpp, آموزش ++c, زبان c++, َشی گرایی در سی پلاس پلاس

دیدگاه بگذارید

نظر شما چیست؟

مطلع کردن شما از
avatar

wpDiscuz