gpt4 book ai didi

c++ - 区分 C++ 静态方法是被类调用还是被对象调用

转载 作者:太空狗 更新时间:2023-10-29 23:36:59 25 4
gpt4 key购买 nike

有没有办法判断类的静态方法是通过调用类方法还是通过对象调用来调用的?

class mertz
{
static int x(void) {....}
....
}

int main( ... )
{
int c = mertz::x();
mertz fred;
ind d = fred.x();
}

x 能否区分它在 for c 和 d 中的调用?

谢谢。

最佳答案

不是以可移植的方式,而且在大多数 C++ 实现中可能根本不是。

静态方法确实只是一个具有有趣名称的全局函数。从理论上讲,您可以检查调用堆栈以查找调用的来源...但是编译器生成的机器指令很可能对两者都是相同的

mertx::x();

fred.x();

因为只需要实例的静态类型来查找要调用的方法,并且此信息在编译时可用。因此,在这两种情况下,调用代码将只调用函数,而无需引用 fred 实例。

关于c++ - 区分 C++ 静态方法是被类调用还是被对象调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952385/

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