Зачем нужен копирующий конструктор...213
Подумайте о том, что будет происходить в программе, если вы вызовете следующую функцию:
void fn( Student fs )
{
/* Некоторые действия */
}
int main( int argcs , char* pArgs[ ] )
{
Student ms ;
fn( ms ) ;
return 0 ;
}
При вызове описанной функции fn( ) ей будет передан в качестве аргумента не сам объект, а его копия.
_________________
213 стр. Глава 18. Копирующий конструктор
«В С++ аргументы функции передаются по значению.»
[Помни!]
Теперь попробуем понять, что же значит — создать копию объекта. Для этого требуется конструктор, который будет создавать объект ( даже если копируется уже существующий объект ). С++ мог бы побайтово скопировать существующий объект в новый, но как быть, если побайтовая копия не совсем то, что нам нужно? Что, если мы хотим нечто иное? ( Не спрашивайте у меня пока, что такое это "иное" и зачем оно нужно. Немного терпения! ) У нас должна быть возможность самим определять, как будет создаваться копия объекта.
Таким образом, в приведённом выше примере необходим копирующий конструктор, который будет выполнять копирование объекта ms при вызове функции fn( ). Этот частный копирующий конструктор и есть Student::Student( students ) ( попробуйте-ка произнести эту скороговорку... ).
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ