Elvis Wang C++程序员转型Java中
6 人赞同
其实我觉得这个问题没有回答的必要,属于语言概念层面的东西。
class A {
int fun1() { ... }
static int func2() { ... }
}
首先你要搞清楚什么是普通成员函数。成员函数是类实例相关的,不同的实例对象调用成员函数结果一般都不同。
比如,上面的fun1是成员函数,你进行调用:
A *a1 = new A;A *a2 = new A;
a1->fun1();
a2->fun1();
一般来说,a1和a2调研fun1的结果会不同。成员函数在不同的实现里面设计不同,但大致都是在参数列表中隐式传入一个this指针指代当前实例。
静态函数,它其实就是普通函数。静态函数跟类实例没有关系,用a1和a2去调用结果一致,甚至于可以用A.fun2()的方式调用。静态函数调用时不会隐式传入this指针。
简而言之,成员函数实例相关,静态函数类相关。
虚函数,是一种特殊的成员函数,用来实现运行时多态的。
所以静态函数不可能是虚函数。
至于虚函数有什么特点,什么是多态,请自行Bing之。
class A {
int fun1() { ... }
static int func2() { ... }
}
首先你要搞清楚什么是普通成员函数。成员函数是类实例相关的,不同的实例对象调用成员函数结果一般都不同。
比如,上面的fun1是成员函数,你进行调用:
A *a1 = new A;A *a2 = new A;
a1->fun1();
a2->fun1();
一般来说,a1和a2调研fun1的结果会不同。成员函数在不同的实现里面设计不同,但大致都是在参数列表中隐式传入一个this指针指代当前实例。
静态函数,它其实就是普通函数。静态函数跟类实例没有关系,用a1和a2去调用结果一致,甚至于可以用A.fun2()的方式调用。静态函数调用时不会隐式传入this指针。
简而言之,成员函数实例相关,静态函数类相关。
虚函数,是一种特殊的成员函数,用来实现运行时多态的。
所以静态函数不可能是虚函数。
至于虚函数有什么特点,什么是多态,请自行Bing之。