(C++) Присвоение класса внутри его функции
Есть функция:
void someClass::function(someClass newOne)
{
....
someClass newOneFunction = newOne; // простое присвоение переданного класса
someClass newTwoFunction = ??? // как присвоить также класс, от которого вызывалась функция
....
}
Вот ее вызов:
.... someClass test(1, 2, 'c'); someClass testFunction(3, 1, 'o'); test.function(testFunction); ....
Ответ
Praytic, ну тут есть два варианта, либо конструктор копирования, либо метод, который копирует значения в уже существующей.
class SomeClass {
private:
int x, y, z;
public:
// Конструктор копирования
SomeClass(const SomeClass* obj) {
this->Copy(obj);
}
// Копирование
void Copy(const SomeClass* obj) {
this->x = obj->x;
this->y = obj->y;
this->z = obj->z;
}
}Как юзать:
SomeClass obj1 = .... // Конструктор копирования SomeClass obj2(&obj1); // Копирование obj1.Copy(&obj2);
Смотрите также:
Комментарии
- 1
- 2 (Текущая страница)
Ну так почему правильно писать так:
void setFunc(int a, int b, char c) {
this->someInt1 = a;
this->someInt2 = b;
this->someChar = c;
}
а не так?
void setFunc(int a, int b, char c) {
someInt1 = a;
someInt2 = b;
someChar = c;
}
А все, понял.
Правильно для чего? Эти 2 способа получения значений одинаковы, только в первом случае this используется явно(ты сам его ставишь), а во втором неявно(компилятор это и так делает для имен полей и методов данного объекта).
С точки зрения компилятора лучше второй, неявный способ. С точки зрения человека более удобно читать первый вариант, т.к. сразу видно, какие переменные относятся к объекту.
- 1
- 2 (Текущая страница)
Возможность добавлять комментарии была ограничена


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>