C++静态成员函数

只有非静态成员函数才可以成为虚函数,而静态成员函数不能声明为虚函数。

举个例子:
class test
{
public :
    virtual test(){a = new int[5];} //error
    static void g();          //ok
    virtual void f();         //ok
    virtual static void h();  //compile error
    virtual ~test(){delete[] a;} //ok
private:
    int * a;
};
本例中定义了一个 test 类,这个类中有一个指针成员变量 a,test 类中有五个成员函数。在本例中,将析构函数和普通成员函数 f() 声明为虚函数是没有问题的,将构造函数和静态成员函数声明为虚函数则会出现编译错误,这两种做法都是有违 C++ 语法规定的。