Loading...
Jovanna avatar Jovanna 186 Точки

C++ Advanced Task07_03 - ArrayOfPointers - защо кодът работи само с деструктора от TheBig3?

Здравейте,

защо задачата минава всички тесторе и , изобщо работи, без разписан код в copy-assignment оператор=  и в copy конструктора, след като съм ги написала, макар и без код вътре, би следвало да не се генерират дифолтните.

Имам разписан доста подробно деструктор, който виждам че работи перфекртно, изкара ми 100т :))) но, кода не би трябвало да работи, ако следваме правилото на TheBig3, защо?

ArrayOfPointers(const ArrayOfPointers & other) {
        //ЗАЩО РАБОТИ БЕЗ copy-koнструктор  ?
    }

    ArrayOfPointers& operator=(const ArrayOfPointers & other) {
        //ЗАЩО РАБОТИ БЕЗ copy-assignment operator=  ?
    }

Поздрави!

Тагове:
0
C++ Programming
georgi.stef.georgiev avatar georgi.stef.georgiev 921 Точки
Best Answer

Здравей,

Защото никъде не се използват. Погледни кода - създава се един ArrayOfPointers и това е (и му се вика автоматично деструктора накрая на функцията). Правилото казва, че "най-вероятно" ти трябват "всичките 3". Ако никога не ползваш определена фукнционалност, няма как липсата ѝ да ти счупи кода. 

Правилото е да те предпази от грешки. Най-добрият ти вариант в тази ситуация е да ги дефинираш като изтрити членове (= delete). Така не се занимаваш да имплементираш нещо, което не ползваш, а ако случайно се опиташ да го ползваш, ще получиш компилационна грешка и ще се сетиш да го имплементираш (или да си промениш кода)

Поздрави,

Жоро

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.