Возвращение объекта из функции
Возник следующий вопрос. К примеру, есть код:
Код:
class B {
public:
B() {};
~B() {};
// ....
};
class A {
public:
A() {};
~A() {};
A getB() {
return this->b;
}
private:
B b;
};
public:
B() {};
~B() {};
// ....
};
class A {
public:
A() {};
~A() {};
A getB() {
return this->b;
}
private:
B b;
};
Через какие регистры вернется значение из A::getB()? Для примера: если есть функция вида
Код:
int func() {
return 5;
}
return 5;
}
PS: Как вы можете догадаться непосредственно объект не вернется ни через какие регистры если его размер превышает "вместимость" регистра.
Цитата: Ramon
Calling Conventions.
PS: Как вы можете догадаться непосредственно объект не вернется ни через какие регистры если его размер превышает "вместимость" регистра.
PS: Как вы можете догадаться непосредственно объект не вернется ни через какие регистры если его размер превышает "вместимость" регистра.
Разумеется, здесь никаких вопросов нет.
Насколько я уже увидел, для соглашения __thiscall возвращается просто указатель на объект через тот же eax.