📜  静态函数可以在 C++ 中是虚拟的吗?

📅  最后修改于: 2022-05-13 01:55:17.174000             🧑  作者: Mango

静态函数可以在 C++ 中是虚拟的吗?

在 C++ 中,类的静态成员函数不能是虚函数。当你有一个类实例的指针或引用时,就会调用虚函数。静态函数不绑定到类的实例,但它们绑定到类。 C++ 没有指向类的指针,因此没有可以虚拟调用静态函数的场景。

例如,下面的程序给出编译错误,

CPP
// CPP Program to demonstrate Virtual member functions
// cannot be static
#include 
  
using namespace std;
  
class Test {
public:
    virtual static void fun() {}
};


CPP
// CPP Program to demonstrate Static member function cannot
// be const
#include 
  
using namespace std;
  
class Test {
public:
    static void fun() const {}
};


输出

prog.cpp:9:29: error: member ‘fun’ cannot be declared both virtual and static
    virtual static void fun() {}
                            ^

此外,静态成员函数不能是constvolatile 。以下代码也无法编译,

CPP

// CPP Program to demonstrate Static member function cannot
// be const
#include 
  
using namespace std;
  
class Test {
public:
    static void fun() const {}
};

输出

prog.cpp:8:23: error: static member function ‘static void Test::fun()’ cannot have cv-qualifier
    static void fun() const {}
                      ^