Я спросил себя, можно ли использовать указатель this
, так как я обычно использую его каждый раз, когда обращаюсь к переменной-члену или функции. Я задавался вопросом, может ли это повлиять на производительность, так как должен быть указатель, который нужно разыменовывать каждый раз. Поэтому я написал тестовый код
struct A {
int x;
A(int X) {
x = X; /* And a second time with this->x = X; */
}
};
int main() {
A a(8);
return 0;
}
и, что удивительно, даже при -O0
они выдают точно такой же код ассемблера.
Также, если я использую функцию-член и вызываю ее в другой функции-члене, это показывает то же поведение. Значит, указатель this
- это просто время компиляции, а не фактический указатель? Или есть случаи, когда this
фактически переводится и разыменовывается? Я использую GCC 4.4.3 между прочим.