c ++中的静态函数
所以,这个类只能有一个静态函数实例。正确?
答案 0 :(得分:2)
在C ++中,静态成员函数就像普通的全局函数一样,除了名称的可见性之外:
this
指针,因此它只能访问您为其提供访问权限的对象的那些部分(例如,作为参数传递)。extern "C"
。答案 1 :(得分:0)
使函数静态允许在不实例化其所属类的实例的情况下调用它。 learncpp.com还有更多关于这个主题的内容,并查看以下无法编译的示例:
class Foo
{
public:
static void Bar1();
void Bar2();
};
int main(int argc, char* argv[])
{
Foo::Bar1();
Foo x;
x.Bar2();
Foo::Bar2(); // <-- error C2352: 'Foo::Bar2' : illegal call of non-static member function
return 0;
}
答案 2 :(得分:0)
静态成员函数(在类中)意味着您可以在不先创建类的实例的情况下调用该函数。这也意味着该函数无法访问任何非静态数据成员(因为没有实例可以从中获取数据)。 e.g。
class TestClass
{
public:
TestClass() {memberX_ = 10;}
~TestClass();
// This function can use staticX_ but not memberX_
static void staticFunction();
// This function can use both staticX_ and memberX_
void memberFunction();
private:
int memberX_;
static int staticX_;
};
答案 3 :(得分:-2)
可以在不实际创建该类型的变量的情况下调用静态函数,例如:
class Foo
{
public:
static void Bar();
void SNAFU();
};
int main( void )
{
Foo::Bar(); /* Not necessary to create an instance of Foo in order to use Bar. */
Foo x;
x.SNAFU(); /* Necessary to create an instance of Foo in order to use SNAFU. */
}