C++编译器是否为所有成员方法生成"this"指针,或仅为那些引用成员的人生成?

3 c++ pointers this

C++编译器是否为所有成员方法生成隐藏的"this"指针,或仅为那些引用成员的人生成?

Mat*_*son 5

简短回答:是的.

更长的答案:嗯,如果它没有使用任何成员变量,为什么它首先是成员函数[而不是静态成员函数].(是的,可能存在这样的情况:接口提供的成员方法没有对任何成员内容执行任何操作,因为它只是执行类似打印错误消息以在错误类型上调用此函数,或者它是"我们需要的"这有时会起作用",在没有任何需要做的情况下,它是一个空函数).

因为我们可以使用成员函数而不需要编译器知道它实际上做了什么(例如,对于函数的"use"和"definition"使用不同的源文件),编译器必须遵循所有调用的相同调用约定,是否this实际需要指针.当然,如果代码对于编译器来说是可见的,它可以内联函数,或者可以在允许这种情况的情况下进行优化以产生更好的代码.但是,如果编译器不知道更好的"默认"是传递this给函数,无论它是否真的需要.