Я хотел бы знать, в каких ситуациях должен быть определен оператор-конструктор копирования или оператор присваивания. Из того, что я исследовал, я вижу, что всякий раз, когда значение передается значением или возвращается значением, необходимо определить конструктор копирования и перегруженный оператор присваивания. Однако, когда указатели или ссылки используются для передачи/возврата указателем или ссылкой (&), нужен ли нам оператор-конструктор/перегруженный оператор присваивания
class Sample
{
public :
// Assume a constructor that sets the node member
SampleNode * getNode()
{
return _node;
}
private:
SampleNode * node;
}
class SampleNode
{
public:
void getValue()
{
return _value;
}
private:
unsigned int value;
}
main()
{
Sample * ptr = new Sample(15);
SampleNode *node = getNode(); // Do we need a copy constructor here?
}
Определение указателя или ссылки на объект не требует использования каких-либо конструкторов.