Salve, ho questo codice che produce il seguente output:set1,set2,set2,set2.
Forse non ho ben capito il this ma non mi spiego perchè il terzo output sia set2 invece che set1.
codice:
#include <iostream>
class B;
class A
{
public:
virtual A* set(A* a) = 0;
};
class B : public A
{
public:
virtual A* set(B* b)
{
std::cout << "set1 has been called" << std::endl;
b = this;
return b;
}
virtual B* set(A* a)
{
std::cout << "set2 has been called" << std::endl;
a = this;
return this;
}
};
int main(int argc, char *argv[])
{
B *b = new B();
A *a = b->set(b);
a = b->set(a);
a = a->set(b);
a = a->set(a);
return 0;
}