Информация об изменениях

Сообщение Re[7]: Пригласите меня к себе на собеседование! от 25.04.2018 15:06

Изменено 25.04.2018 15:13 AlexGin

Re[7]: Пригласите меня к себе на собеседование!
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AlexGin, Вы писали:


AG>>P.S. Статический метод — это метод не принадлежащий ни одному из объектов (экземпляров) класса.

Тё>Как может метод принадлежать экземпляру? Метод всегда принадлежит классу. Просто обычный метод применяется к instance, т.е. к полям объекта, а статический — к классу, т.е. к полям класса.
Что за дичь! К каким полям класса? Разве что к статическим полям...

Вот пример:
class CMyClass
{
public:
    CMyClass() // c-tor
    {
    }
    void foo()
    {
    }
private:
    int    m_field1;    
        static double m_field2;
public:
    static void bar()
    {
        std::cout << m_field1 << std::endl; // OMG!!!
        std::cout << m_field2 << std::endl; 
    }
};

У кого какие мнения — строка с OMG:
— скомпилируется/ не скомпилируется
— выполниться/ не выполниться

AG>>Он просто объявлен в пространстве имён данного класса. Фактически — это аналог глобальной функции (просто объявленной в составе класса).

Тё>Одинаковая реализация не говорит, что это идеалогически одно и то же. И кроме того, в чистых OO языках нет глобальных функций.
Я в курсе, что в новых ЯП нет понятия глобальная функция, тем не менее — не будешь спорить, что статические — аналоги глобальных.
НАПОМНЮ — речь шла об C++
Re[7]: Пригласите меня к себе на собеседование!
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AlexGin, Вы писали:


AG>>P.S. Статический метод — это метод не принадлежащий ни одному из объектов (экземпляров) класса.

Тё>Как может метод принадлежать экземпляру? Метод всегда принадлежит классу. Просто обычный метод применяется к instance, т.е. к полям объекта, а статический — к классу, т.е. к полям класса.
Что за дичь! К каким полям класса? Разве что к статическим полям...

Вот пример:
class CMyClass
{
public:
    CMyClass() // c-tor
    {
    }
    void foo()
    {
    }
private:
    int    m_field1;    
    static double m_field2;
public:
    static void bar()
    {
        std::cout << m_field1 << std::endl; // OMG!!!
        std::cout << m_field2 << std::endl; 
    }
};

У кого какие мнения — строка с OMG:
— скомпилируется/ не скомпилируется
— выполниться/ не выполниться

AG>>Он просто объявлен в пространстве имён данного класса. Фактически — это аналог глобальной функции (просто объявленной в составе класса).

Тё>Одинаковая реализация не говорит, что это идеалогически одно и то же. И кроме того, в чистых OO языках нет глобальных функций.
Я в курсе, что в новых ЯП нет понятия глобальная функция, тем не менее — не будешь спорить, что статические — аналоги глобальных.
НАПОМНЮ — речь шла об C++