2011-12-20 3 views
-4

У вас есть статические методы и экземпляры в том же классе C# или C++?
Если да, то какой смысл использовать оба, если нет, почему бы и нет?У вас есть статические методы и экземпляры в том же классе C# или C++?

+2

Это домашнее задание? – ibid

+1

Можете ли вы указать * конкретный * пример, с кодом? И, пожалуйста, ограничивайте свой вопрос одним языком. C# и C++ совершенно разные. –

+1

Посмотрите на класс String рамки ... и вы получите ответ на оба вопроса. – Jonathan

ответ

3

Да, конечно, вы можете!

Статические методы не передают неявный указатель this и используются, когда вам не нужно работать с конкретным экземпляром этого класса/типа (например, изменять его элементы).

Если у вас do необходимо изменить конкретный экземпляр, вам следует использовать метод экземпляра.

Нет причин, по которым эти два типа методов нельзя объявить вместе в одном классе. Если вы используете C#, ознакомьтесь с некоторыми классами, определенными .NET Framework. Многие из них имеют как статические, так и экземплярные методы. Это даст вам некоторое представление о том, как их можно эффективно использовать.

В C++ нет причин даже создавать «статический» класс (один со всеми статическими методами), как вы можете найти на C#. Лучшим подходом было бы превращение функций в пространство имен как свободные функции. Не все должно быть «объектом».

1

Да, вы можете.

И много использования. Статические методы обычно являются библиотечными инструментами, которые могут применяться к экземплярам класса.

Методы экземпляра - это методы, которые вы вызываете каждым конкретным экземпляром.

+0

Спасибо всем. Не сейчас домашняя работа, но да, я просто изучаю этот материал. – steelponey

1

Да, вот Розыгрыши пример из самой структуры:

namespace System 
{ 
    public struct Int32 //... 
    { 
     public const int MaxValue = 2147483647; 

     //... 

     public TypeCode GetTypeCode(); 
     public static int Parse(string s); 

     //... 
    } 
} 
1

Только те члены держат Статические, которые необходимы для совместного использования, хотя каждый и каждый объект того же класса происхождения одинаково, например, если вы имеют статический метод (статический метод также требует возврата статического значения класса), статические члены инициируются до того, как вы сделаете объект этого класса.

Теперь вы также спросили, почему и почему нет, помните, что существует тысячи способов сделать это и тысячи причин, если вы начнете думать объектно-ориентированным образом.