Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос про список инициализации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Си, Запись и Чтение из файла. http://www.cyberforum.ru/cpp-beginners/thread51563.html
Глупый вопрос, но весь гугл перерыл. Нужно сделать именно на СИ(не на с++) чтение и запись в файл .txt . С использованием библиотеки stdafx.h . Пожалуйста подскажите.:-[
C++ Дана матрица m*n. Необходимо упорядочить все числа в порядке возрастания в каждой строке. Дана матрица m*n. Необходимо упорядочить все числа в порядке возрастания в каждой строке. Вывести результат до и после изменения. http://www.cyberforum.ru/cpp-beginners/thread51558.html
C++ Ребята, объясните пожалуйста эту рекурсию!
Ребята, ну хоть убейся не могу понять эту рекурсивную фунцию для задачи с Ханойской башней! Всё работает отлично, но вот как! Кто может, объясните пошагово, буду очень признателен! ...
Ввести координаты вершин треугольника. Проверить, является ли он равнобедренным C++
1 Ввести координаты вершин треугольника. Проверить, является ли он равнобедренный. 2 Ввести координаты двух точек. Найти место пересечения координатной оси X и прямой, проходящей через эти точки. ...
C++ fseek вылетает http://www.cyberforum.ru/cpp-beginners/thread51521.html
#include <stdio.h> #include <windows.h> char *filename; long size; File *in; char *infile; int main(int argc, char *argv) { filename = "file.bin"; try
C++ Код Хэмминга Прошу объяснить как работает этот код Хэмминга и написать прогу по заданию. Задание. 1)Написать программу, реализующую код Хэмминга для текстового файла. Блок для кодирования взять... подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,382
20.09.2009, 13:31
Нет, тут как раз ничего спорного нет.
Согласно Стандарту, при конструировании сложного объекта выполняются следующие действия:
1. сначала конструируются все базовые классы - в том порядке, в котором они указаны в списке наследования; для каждого из них также выполняется конструирование в точно таком же порядке;
2. затем конструируются все члены класса в том порядке, в котором они указаны в объявлении класса; если член класса указан в списке инициализации, для него вызывается соответствующий конструктор, иначе вызывается конструктор по умолчанию;
3. и наконец, выполняется тело конструктора объекта.
После выполнения этих действий объект начинает "существовать".

Как происходит конструирование объектов класса A:
- поскольку базовых классов (суперклассов) у него нет, то п.1 пропускается;
- конструируется член i. Поскольку он не указан в списке инициализации, то для него вызывается конструктор по умолчанию, а поскольку это POD-тип, то default ctor у него пустой и ничего не делает - вменяемый компилятор его просто отимизирует (выкидывает из кода). Непосредственно начиная с этого момента, у нас уже существует "живой" член i, имеющий некое случайное значение.
- наконец, выполняется тело конструктора класса A. В момент начала выполнения тела конструктора член i имеет какое-то случайное значение, и только в теле конструктора члену i присваивается значение 1.

Как конструируется объект класса B:
- поскольку базовых классов (суперклассов) у него нет, то п.1 пропускается;
- конструируется член i. Поскольку он указан в списке инициализации и это POD-тип, то для него выполняется инициализация сразу заданным значением. Непосредственно начиная с этого момента, у нас уже существует "живой" член i, имеющий строго заданное значение 1.
- наконец, выполняется тело конструктора класса B (пустое). В момент начала выполнения тела конструктора член i уже имеет значение 1 - как и было задано в списке инициализации.

Все это как раз и видно в тестовом коде.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru