是否可以创建一个不需要实例化的类?换句话说,是否可以使用该类的函数而不具有它的实例?
答案 0 :(得分:6)
您可以使用静态函数,它们绑定到Class,而不是实例。
class Test{
static void
doSomething()
{
std::cout << "something" << std::endl;
}
}
int
main(int argc, char** argv)
{
Test::doSomething(); //prints "something" without instance of Test
}
否则你可以构建一个Singleton,在这种情况下类本身会保存实例,但我不确定这是否是你想知道的......
答案 1 :(得分:2)
你可以使所有成员函数和变量都是静态的,但是人们开始想知道为什么它应该是一个类,而不是一个名称空间。
但是有一个很好的理由:你可能想要使用这样的类模板。 C ++ 14将添加变量模板,这样就可以在没有类的情况下实现相同的模板。一个类还允许访问控制;你可以为具有匿名命名空间的非模板案例伪造这一点,但是一个类可能更自然。
答案 2 :(得分:2)
可以在不创建类实例的情况下调用静态方法。
class CMyClass
{
public:
static void Method1()
{
printf("Method1\n");
}
};
CMyClass::Method1(); // Prints "Method1".
答案 3 :(得分:1)
是的,有可能。如果你想使用没有实例的类,你必须使用静态函数。
答案 4 :(得分:0)
为此,您应该使用static
修饰符。请参阅此处的文档:http://msdn.microsoft.com/en-us/library/s1sb61xd.aspx
答案 5 :(得分:0)
您还可以使用静态方法创建此类的私有构造函数,以防止创建任何实例