你可以在同一个c#或C++类中有静态和实例方法吗?
如果是的话,如果没有,为什么不这样做会有什么用?你可以在同一个c#或C++类中有静态和实例方法吗?
-4
A
回答
3
是的,当然你可以!
静态方法不会传递隐式的this
指针,只要您不需要对该类/类型的特定实例进行操作(例如修改其成员),就会使用它。
如果你做需要修改一个特定的实例,你应该使用一个实例方法。
没有理由这两种类型的方法不能在同一个类中一起声明。如果您使用的是C#,请查看.NET Framework定义的一些类。其中很多都有静态和实例方法。这会给你一些关于如何有效使用这些东西的想法。在C++中,没有理由甚至创建一个“静态”类(其中一个包含所有静态方法),就像你在C#中发现的那样。更好的方法是将函数作为自由函数放入名称空间。并非所有东西都必须是“对象”。
1
是的,你可以。
还有很多用途。静态方法通常是库工具,可用于类的实例。
实例方法是由每个特定实例调用的方法。
+0
谢谢大家。现在不做作业,但是,我正在学习这些东西。 – steelponey 2011-12-20 09:04:20
1
是的,这里是从框架本身一个实际的例子:这是需要加以虽然每同源类的每个对象均摊
namespace System
{
public struct Int32 //...
{
public const int MaxValue = 2147483647;
//...
public TypeCode GetTypeCode();
public static int Parse(string s);
//...
}
}
1
只有那些成员保持静态,例如,如果你有一个静态方法(静态方法也需要返回该类的静态值),静态成员即使在创建该类的对象之前也会启动。
现在您还问了为什么,为什么不呢,记住有千种方法可以这样做,如果您开始以面向对象的方式开始思考,千万个理由。
相关问题
- 1. 我们可以有一个虚拟的静态方法吗? (C++)
- 2. 一个类可以返回它自己的静态实例吗? (在C#)
- 3. 我可以在Objective-C中内联静态类方法吗?
- 4. C#中可以重写一个静态方法吗?
- 5. 一个静态方法总是可以转换为一个实例方法吗?
- 6. 在C#中,属性可以应用于静态类,方法或属性吗?
- 7. 我可以从Worker线程调用静态类实例的静态方法吗?
- 8. 在c中访问一个实例类的静态类型#
- 9. 有了ES6类,可以从静态方法返回该类的实例吗?
- 10. 为什么你不能在C#中声明一个静态结构,但它们可以有静态方法?
- 11. 静态方法和类方法装饰器可以在纯Python中实现吗?
- 12. 声明一个可以在没有类实例的情况下调用的Objective-C静态方法?
- 13. 一个静态类可以在单个进程中多次实例化吗?
- 14. 你可以在Objective-C的早期返回一个方法吗?
- 15. 我们可以在Objective C实例方法中使用C风格的静态变量吗?
- 16. C#类实例的静态方法VS静态类的内存使用情况
- 17. 有人可以解释这个C#静态类属性吗?
- 18. 我可以从同一模块添加类方法和实例方法吗?
- 19. 静态或实例方法在.NET中扩展更好吗?
- 20. 实例类 - >静态类 - > C#中的实例类
- 21. IWindsorContainer可以通过静态方法实例化吗?
- 22. Java,静态方法可以实例化一个被调用的对象吗?
- 23. 无法在C#中的静态类中声明实例成员
- 24. 我可以在C++中返回对该类中的静态类(单例)实例的引用吗?
- 25. 为什么在C#中的静态方法中通过类实例调用非静态方法
- 26. from/where我可以在类中调用静态类方法吗?
- 27. python类中的实例方法和静态方法
- 28. 你可以在同一个HTML表单上有多个Plupload实例吗?
- 29. Python中的静态和实例方法
- 30. 你可以在另一个项目中实例化一个类吗?
这功课吗? – ibid 2011-12-20 08:56:13
你可以给一个特定的*例子,代码?而且,请将您的问题限制为一种语言。 C#和C++完全不同。 – 2011-12-20 08:56:39
看看框架的String类...你会得到两个问题的答案。 – Jonathan 2011-12-20 08:58:47