nataraj: (Default)
[personal profile] nataraj
class EXPORT EventHomeDir : public Event
{
public:
    EventHomeDir(const QString &dir)
        : Event(eEventHomeDir), m_dir(dir) {}
    const QString &homeDir()  const { return m_dir; }
    void setHomeDir(const QString &dir) { m_dir = dir; }
protected:
    QString m_dir;
};
1. Что такое EventHomeDir(const QString &dir) : Event(eEventHomeDir), m_dir(dir) {}
Что-то не припомню что такое двоеточие и не понимаю что вся эта конструкция означает...

2. const QString &homeDir() const { return m_dir; } -- что означает амперсанд перед именем функции... Зачем он тут?

Туплю... Ничего не понимаю... Хоть за страуструпом к родителям едь...

Date: 2007-08-21 12:27 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
1. Это конструктор, а не просто так функция. После двоеточия пишутся вызовы конструкторов членов объекта, которые выполняются до входа в тело данного конструктора, которое в данном случае пустое. Т.е. понимать это следует так
"Для создания объекта EventHomeDir из QString dir сначала инициализируем его как Event с параметром eEventHomeDir, а потом инициализируем член m_dir строкой dir. Больше не делаем ничего."

2. Амперсэнд означает что эта функция возвращает ссылку на объект. Такой синтаксический sugar в С++ есть - хрень которая синтаксически почти везде выглядит как переменая типа класс, а на самом деле является указателем.

Date: 2007-08-21 12:53 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Ага... Спасибо!
Теперь мне все ясно! ;-)

Date: 2007-08-21 12:31 pm (UTC)
From: [identity profile] slobin.livejournal.com
Первое не знаю, а второе: метод, возвращающий константную ссылку (или ссылку на константу? вечно в этом путаюсь!) на QString. Ссылки не путать с указателями. А вообще я плюсов не знаю -- я Медведь с Низким Коэффициентом Умственного Развития.

... Наша профессия не для дураков ...

Date: 2007-08-21 12:54 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
А вообще я плюсов не знаю -- я Медведь с Низким Коэффициентом Умственного Развития.
Я вот тоже, как выяснилось, не знаю... А что делать...

За ответ спасибо ;-)

Date: 2007-08-21 12:33 pm (UTC)
From: [identity profile] al-stal.livejournal.com
1. Двоеточие после объявления конструктора означает, что до его инициализации (которая в скобках) будут инициализированы стоящие после двоеточия объекты.
То есть запись
EventHomeDir(const QString &dir) : m_dir(dir) {}
равнозначна
EventHomeDir(const QString &dir) : {m_dir = dir}

2. вроде как указатель на функцию...

Date: 2007-08-21 12:36 pm (UTC)
From: [identity profile] al-stal.livejournal.com
то есть ты сначала инициализировал объект - родителя Event(eEventHomeDir), а потом уже, в конструкторе, сам объект-наследник EventHomeDir

Date: 2007-08-21 12:39 pm (UTC)
From: [identity profile] slobin.livejournal.com
2. Не-а. Не указатель на функцию, а функция, возвращающая указатель. Указатель на функцию был бы const QString (&homeDir)(). Вот за что я не люблю C и C++ -- в таких вещах все всегда ошибаются. И, кстати, не указатель, а ссылка.

... Векторы прерываний были завязаны узлом ...

Date: 2007-08-21 12:43 pm (UTC)

Date: 2007-08-21 12:37 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Ну, трижды уже ответили. Четвёртый ответ нужен? ;)

Правильный — у Виктора.

Date: 2007-08-21 12:52 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Четвёртый ответ нужен?
Не, спасибо, этого хватит ;-)

Я даже не ожидал такой бурной и немедленной реакции... ;-)

Правильный — у Виктора.
Ну это уж кто бы сомнивался ;-)

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 21st, 2026 04:01 am
Powered by Dreamwidth Studios