Wes*_*ler 2 c++ static class function
有没有办法判断类的静态方法是通过调用类方法还是通过来自对象的调用来调用的?
class mertz
{
static int x(void) {....}
....
}
int main( ... )
{
int c = mertz::x();
mertz fred;
ind d = fred.x();
}
Run Code Online (Sandbox Code Playgroud)
x可以告诉c和d的调用区别吗?
谢谢.
不是以可移植的方式,在大多数C++实现中可能根本不存在.
静态方法确实只是一个有趣名称的全局函数.理论上,您可以检查调用堆栈以查找调用来自何处...但是,编译器生成的机器指令很可能对于两者都是相同的
mertx::x();
Run Code Online (Sandbox Code Playgroud)
和
fred.x();
Run Code Online (Sandbox Code Playgroud)
因为只需要实例的静态类型来查找哪个是要调用的方法,并且此信息在编译时可用.因此,在这两种情况下,调用代码只调用函数而无需引用fred
实例.
归档时间: |
|
查看次数: |
1060 次 |
最近记录: |