Кіріспе

C++ бағдарламалау тілінде көшірме конструкторы – жаңа объектіні қолданыстағы объектінің көшірмесі ретінде жасауға арналған ерекше конструктор. Көшірме конструкторлары C++-та объектілерді көшірудің стандартты жолы болып табылады, клондаудан өзгеше және C++-қа тән ерекшеліктері бар. Мұндай конструктордың бірінші аргументі – құрастырылып жатқан объектінің типімен (const немесе non const) бірдей типтегі объектіге сілтеме, одан кейін кез келген типтегі параметрлер (барлығының әдепкі мәндері бар) болуы мүмкін. Көбінесе компилятор әрбір класс үшін көшірме конструкторын автоматты түрде жасайды (жасалма көшірме конструкторы деп аталады), бірақ ерекше жағдайларда бағдарламашы көшірме конструкторын жасайды, ол пайдаланушы анықтаған көшірме конструкторы деп аталады. Мұндай жағдайларда компилятор оны жасамайды. Сондықтан, әрқашан пайдаланушы немесе жүйе анықтаған бір көшірме конструкторы болады. Пайдаланушы анықтаған көшірме конструкторы, әдетте, объектінің иелігінде көрсеткіштер немесе бөлісе алмайтын сілтемелер болған кезде қажет, мысалы, файлға сілтеме жасағанда, онда деструктор мен тағайындау операторы да жазылуы тиіс (үштік қағиданы қараңыз).

Мысалдар

Бұл мысалдар көшірме жасаушылардың қалай жұмыс істейтінін және олардың кейде қажет болу себебін түсіндіреді.

Бит бойынша көшірме жасаушы

C++-та "биттік көшірме жасаушы" деген ұғым жоқ. Дегенмен, автоматты түрде жасалған көшірме жасаушы мүшелердің көшірме жасаушыларын шақыру арқылы көшірмелейді, ал шикі көрсеткіш мүшесі үшін бұл шикі көрсеткіштің өзін көшіреді (яғни, терең көшірме жасалмайды).

Логикалық көшірме жасаушысы

Логикалық көшірме конструкторы құрылымды және оның динамикалық құрылымдарын нақты көшіреді. Логикалық көшірме конструкторлары көбінесе көшіріліп жатқан объектінің ішінде көрсеткіштер немесе күрделі объектілер болғанда қолданылады.