Я слышал, что помимо обыкновенного конструктора по-умолчанию и пользовательского конструктора в языке С также имеется некий конструктор-копировщик.
Подскажите пожалуйста, что это за конструктор и что такое он копирует?
Я слышал, что помимо обыкновенного конструктора по-умолчанию и пользовательского конструктора в языке С также имеется некий конструктор-копировщик.
Подскажите пожалуйста, что это за конструктор и что такое он копирует?
Помимо конструктора и деструктора, компилятор по-умолчанию предоставляет также конструктор-копировщик, который вызывается каждый раз, когда нужно создать копию (!) объекта.
Происходит это всё таким образом:
Когда объект передаётся как значение либо в функцию, либо из функции в виде возврат, всегда создаётся его временная копия. Если в программе обрабатывается объект, созданный пользователем, то для выполнения этих операций вызывается конструктор-копировщик класса.
Все копировщики принимают только один параметр, и это - ссылка на объект в том же классе. Разумно будет сделать эту ссылку константной, так как конструктор не должен изменять передаваемый в него объект, например:
Cat(const Cat