gpt4 book ai didi

c++ - "this"指针只是编译时的东西吗?

转载 作者:IT老高 更新时间:2023-10-28 13:57:44 26 4
gpt4 key购买 nike

我问自己 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 顺便说一句。

最佳答案

So is the this pointer just a compile time thing and not an actual pointer?

它非常一个运行时的东西。它指的是调用成员函数的对象,自然该对象可以在运行时存在。

什么是编译时的事情是名称查找的工作原理。当编译器遇到 x = X 时,它必须弄清楚正在分配的这个 x 是什么。所以它查找它,并找到成员变量。由于 this->xx 指的是同一个东西,自然你会得到相同的汇编输出。

关于c++ - "this"指针只是编译时的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53264848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com