Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов конструктора, Как понять такую запись? 
:(
    Опции темы
NiJazz
  Дата 21.3.2004, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Код

class CEx04aView : public CView
{
     ...........
}

CRect m_rectEllipse;

CEx04aView::CEx04aView() : m_rectEllipse(0, 0, 200, 200)
{
m_nColor = GRAY_BRUSH;  
}


Ясно тут, что при вызове конструктора просто рисуется эллипс, ограниченный прямоугольником CRect. Но как такую запись объяснить с точки зрения синтаксиса? То есть чем обоснована такая форма записи? Почему так писать можно?
PM MAIL   Вверх
mr.DUDA
Дата 21.3.2004, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата
Ясно тут, что при вызове конструктора просто рисуется эллипс, ограниченный прямоугольником CRect.

Нет, эллипс не рисуется, а в прямоугольник (CRect) записываются значения left, top, right, bottom, используя конструктор CRect::CRect оъекта m_rectEllipse.

Цитата
Но как такую запись объяснить с точки зрения синтаксиса? То есть чем обоснована такая форма записи? Почему так писать можно?

При вызове конструктора можно проинициализировать любые поля объекта, просто записав инициализирующие выражения после двоеточия, это принято в стандарте С++. Иногда это гораздо удобнее, чем писать например:
Код
CEx04aView::CEx04aView()
{
    m_rectEllipse = CRect(0, 0, 200, 200);
    m_nColor = GRAY_BRUSH;  
}



--------------------
user posted image
PM MAIL WWW   Вверх
NiJazz
Дата 21.3.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


Профиль
Группа: Экс. модератор
Сообщений: 2286
Регистрация: 10.8.2003
Где: Москва

Репутация: 1
Всего: 23



Цитата
Нет, эллипс не рисуется, а в прямоугольник (CRect) записываются значения left, top, right, bottom, используя конструктор CRect::CRect оъекта m_rectEllipse.

Да, создаётся лишь ограничивающий прямоугольник - Rectangle. Плохо выразился.

Цитата
При вызове конструктора можно проинициализировать любые поля объекта, просто записав инициализирующие выражения после двоеточия, это принято в стандарте С++.

Спасибо!



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1691 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.