你可以在同一个c#或c ++类中使用静态和实例方法吗? 如果是的话,如果没有,那么两者的用途是什么?
答案 0 :(得分:3)
是的,当然可以!
静态方法不传递隐式this
指针,只要您不需要操作该类/类型的特定实例(例如修改其成员),就会使用它。
如果做需要修改特定实例,则应使用实例方法。
没有理由不能在同一个类中一起声明这两种类型的方法。如果您使用的是C#,请查看.NET Framework定义的一些类。很多都有静态和实例方法。这将使您了解如何有效地使用它们。
在C ++中,没有理由像在C#中那样创建一个“静态”类(一个包含所有静态方法)。更好的方法是将函数作为自由函数放入命名空间。并非一切都必须是“对象”。
答案 1 :(得分:1)
是的,你可以。
有很多用途。静态方法通常是库工具,可以应用于类的实例。
实例方法是由每个特定实例调用的方法。
答案 2 :(得分:1)
是的,这是框架本身的一个实际例子:
namespace System
{
public struct Int32 //...
{
public const int MaxValue = 2147483647;
//...
public TypeCode GetTypeCode();
public static int Parse(string s);
//...
}
}
答案 3 :(得分:1)
只有那些成员保持静态,需要通过相同原始类的每个对象共享,例如,如果你有一个静态方法(静态方法也需要返回类的静态值),即使您创建该类的对象,也会启动静态成员。
现在你也问过为什么以及为什么不这样做,请记住,如果你开始以面向对象的方式思考,有千种方法可以做到这一点以及千个原因。