Како имплементирати конструктор за копирање у Ц ++?



Разумевање конструктора за многе је била енигма. Овај чланак ће вам помоћи да демистификујете концепт конструктора за копирање у језику Ц ++

Разумевање Конструктори је за многе била енигма. Овај чланак ће вам помоћи да демистификујете концепт конструктора за копирање у језику Ц ++. Следећи смерници ће бити обрађени у овом чланку,

Па кренимоса овим чланком о Конструктору копирања на Ц ++





како поставити помрачење за јаву

Конструктор за копирање је конструктор који иницијализује објекат класе користећи други објекат исте класе.

Синтакса:



Кључну реч цонст имамо јер желимо вредност учинити константном и осигурати да она није измењена негде у коду. Попут заданог конструктора, и конструктор копије обезбеђује преводилац. То се назива подразумевани конструктор копија. Конструктори за копирање могу се учинити приватним. Не можемо копирати објекте класе када конструктор копирања учинимо приватним.

Ево примера кода :

#инцлуде усинг тест спаце стд цласс тест {привате: инт к публиц: тест (инт к1) {к = к1} тест (цонст тест & т2) {к = т2.к} инт гетКс () {ретурн к}} инт маин () {тест т1 (7) // Овде се назива нормални конструктор тест т2 = т1 // овде се зове конструктор копије<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Излаз:



Конструктор излазних копија у Ц ++ - Едурека

Објашњење

Горњи програм је основни приказ конструктора копија. Имамо тест класе, са чланом приватних података типа инт који се зове к. Тада имамо параметарски конструктор, који променљивим к додељује 7. Имамо конструктор копија, који инстанцира вредност т2 са вредношћу т1. Послала се адреса т2 која садржи вредност т1 и додељена је к. Постоји функција гет која враћа вредност к.

Главна функција има објекат теста класе који се зове т1. Уз овај објекат је повезана вредност, ово је параметар. Главна функција има још један објекат теста класе који се зове т2. Ово се иницијализује употребом променљиве т1 и овде се позива конструктор копирања. На крају, функција гет се позива у односу на т1 и т2 да би се добила вредност к.

Врсте

рашчлањивање кмл датотека у јави

Постоје две врсте конструктора за копирање.
Цон Конструктор за плитке копије
Цон Конструктор дубоких копија

Настављамо са овим чланком о Конструктору копирања на Ц ++

Конструктор плитке копије:

Конструктор за плитке копије је подразумевани конструктор за копирање.

Пример:

Двоје људи истовремено приступају бази података и врше промене вредности у два различита система. Ако тада изврше промене у бази података, обе ове промене ће бити приказане у бази података. Оба објекта ће указивати на исто меморијско место. Ово је конструктор за плитке копије. То се углавном дешава када радимо са подразумеваним конструктором копија. Ево примера кода за: Конструктор за површинске копије:

#инцлуде усинг тест спаце стд цласс тест {публиц: инт и, з тест (инт и1, инт з1) {и = и1 з = з1}} инт маин () {тест а (7,13) цоут<<'the sum is: '<< a.y+a.z return 1 } 

Излаз:

Објашњење:

У горњем коду користимо подразумевани конструктор копије који је обезбедио компајлер. Дакле, то је конструктор плитких копија.

како се користи дб прегледач за склите

Настављамо са овим чланком о Конструктору копирања на Ц ++

Конструктор дубоких копија

Конструктор дубоких копија је кориснички дефинисани конструктор копија.
На пример:
Када двоје људи морају да направе презентацију и обоје копирају из истог извора, копије су одвојене. Дакле, када вршите измене то неће утицати само на другу копију. Ово је Дееп Цопи Цонструцтор. Оба објекта ће бити усмерена на различите меморијске локације, а промене на једном неће имати ефекта на друге. Меморија се динамички додељује.

Ево примера кода за: Конструктор дубоког копирања:

#инцлуде усинг тест спаце стд цласс тест {привате: инт к публиц: тест (инт к1) {к = к1} тест (цонст тест & т2) {к = т2.к} инт гетКс () {ретурн к}} инт маин () {тест т1 (7) // Овде се назива нормални конструктор тест т2 = т1 // овде се зове конструктор копије<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Излаз:

Објашњење

Ово је исти код који смо користили горе, дајући сличне резултате. То је кориснички дефинисани конструктор копија, па је према томе конструктор дубоких копија.

Тако смо дошли до краја овог чланка о „Конструктору копирања у Ц ++“. Ако желите да сазнате више, погледајте Едурека, поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога и јавићемо вам се што је пре могуће.