Re: Обращение к статическим функциям-членам из родительского класса
От: _niko_ Россия  
Дата: 31.08.13 19:08
Оценка: 42 (4) +1
Здравствуйте, Udzhen, Вы писали:

U>
U>1) aboutQt();
U>2) ::aboutQt();
U>3) QApplication::aboutQt()
U>

U>;

U>Какой вариант по Вашему мнению наиболее предпочтителен?

В общем случае тот в котором компилятору не придется за тебя додумывать откуда же именно взять вызываемую функцию.

U>Есть ли какие либо технические тонкости при различном обращении?
#include <iostream>


void aboutQt()
{
    std::cout << __FUNCTION__ << std::endl;
}


class QApplication
{
public:
    static void aboutQt()
    {
        std::cout << __FUNCTION__ << std::endl;
    }
};


class My1Aplication : public QApplication
{
public:
    static void aboutQt()
    {
        std::cout << __FUNCTION__ << std::endl;
    }

    static void foo()
    {
        std::cout << std::endl << __FUNCTION__ << "\n-------------------\n";
        aboutQt();
        ::aboutQt();
        QApplication::aboutQt();
    }
};


class My2Aplication : public QApplication
{
public:
    static void foo()
    {
        std::cout << std::endl << __FUNCTION__ << "\n-------------------\n";
        aboutQt();
        ::aboutQt();
        QApplication::aboutQt();
    }
};


int main()
{
    My1Aplication::foo();
    My2Aplication::foo();

    return 0;
}


Результат:
My1Aplication::foo
-------------------
My1Aplication::aboutQt
aboutQt
QApplication::aboutQt

My2Aplication::foo
-------------------
QApplication::aboutQt
aboutQt
QApplication::aboutQt
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.