переменные экземпляра — C ++ возвращает объект, это возможно?

class A{
int a;
A (const A& A) {
this->a = A.a
} //copy constructor

A& operator=(const A& test) {
return *(new A(test));
} //operator overloading
};

Это возможно?

Есть ли *(new A(test)) действительно вернуть ссылку на класс A пример?

0

Решение

Является ли это возможным? Да. Должны ли вы сделать это? Нет, потому что это утечка памяти, которую никто бы никогда не назвал delete по результату назначения. И во-вторых, это не совсем «назначение», так как this->a не изменяется A::operator=(),

Правильный способ реализации этого хотел бы больше так:

class A
{
private:
int a;

public:
A(int val = 0)
: a(val)
{
}

A(const A& A)
: a(A.a)
{
}

A& operator=(const A& test)
{
this->a = test.a;
return *this;
}
};

Конечно, для такого простого примера вы могли бы просто исключить конструктор копирования и оператор присваивания и позволить сгенерированным компилятором реализациям по умолчанию обрабатывать копирование A::a для тебя.

1

Другие решения


По вопросам рекламы [email protected]