Я спросил себя, можно ли использовать 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 кстати.