Я пытаюсь реализовать конструктор копирования и перегруженный конструктор назначения. У меня есть класс Employee, в котором есть три элемента данных. 1-name 2-title 3-зарплата.Оператор копирования или оператор присваивания? Что мне не хватает?
Employee::Employee(const Employee &emp)
{
name = emp.name;
title = emp.title;
salary = emp.salary;
cout << "\nOverloaded copy constructor called\n";
}
Employee Employee::operator = (const Employee &emp) //Overloading the assignment operator.
{
name = emp.name;
title = emp.title;
salary = emp.salary;
cout << "\nOverloaded assignment operator called\n";
return emp; //Or return *this.
}
Вот что я не понимаю:
1- я не попал на «это» указатель. Если мой перегруженный оператор присваивания возвращает * этот или объект emp. Поскольку мне кажется, что этот объект в параметре является объектом правой руки при назначении. Поэтому я не должен возвращать объект левой руки с * this (если это то, что * это будет делать)?
2- В основной функции я попытался позвонить для вызова оператора присваивания сначала и конструктора копирования после этого. Таким образом, я ожидал, что я буду видеть заявление COUT я включил там один за другим, однако, Вот мой результат:
Перегруженного конструктор копирования называется
Перегруженного оператор присваивания называется
Перегруженного конструктора копирования называется
перегруженной копия конструктор под названием
Почему это происходит?
3-Должен ли я передавать объекты с помощью const? Из книги, которую я изучаю, нет.
В основном я просто написал
Employee x;
x = another;
Employee y = x;
«другой» это просто (плохо назван) объект Employee Я инициализируется раньше в моем коде.
Так должен не первое задание выходного
«перегружено задание называется» и второе назначение (не назначение, но копия по моему пониманию) выход «Перегруженный конструктор копирования называется»
Для номера 2 и 3 - Покажите нам код, связанный с этим. – 0x499602D2