у вас могут быть статические методы и методы экземпляров в одном и том же классе c # или c ++? - PullRequest
0 голосов
/ 20 декабря 2011

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

Ответы [ 4 ]

3 голосов
/ 20 декабря 2011

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

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

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

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

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

1 голос
/ 20 декабря 2011

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

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

1 голос
/ 20 декабря 2011

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

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

        //...

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

        //...
     }
}
1 голос
/ 20 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...