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

Список инициализации в конструктор C++11. Зачем? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы C++. Ошибка: M должна быть константой http://www.cyberforum.ru/cpp-beginners/thread1006427.html
Пытаюсь сделать массив, вот что вышло. Выбивает ошибку, что M должна быть константой (15 строка). Как это исправить? #include<iostream> #include<cmath> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int** matrix = NULL;
C++ Используя стек, определить, является ли введённая с клавиатуры строка палиндромом. Используя стек, определить, является ли введённая с клавиатуры строка палиндромом. Не могу разобраться #include "stdafx.h" #include <iostream> #include <conio.h> #include <Windows.h> using namespace System; using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1006421.html
C++ Работа с массивом с помощью функций
Всем доброго времени суток! Вообщем нужно выполнить следующее задание с использованием функций: В одномерном массиве, состоящем из n вещественных элементов, вычислить: · количество элементов массива, равных 0 · сумму элементов массива, расположенных после минимального элемента Упорядочит элементы массива по возрастанию модулей элементов. Дана целочисленная прямоугольная матрица....
C++ Чтение чисел из файла.Что делаю не так?
По заданию нужно чтоб читались значения в виде массива из файла и провести с массивом в дальнейшем различные операции(формулами,графиком) и сразу ошибка. 12 `f' undeclared (first use this function) #include<stdio.h> #include<iostream> #include<fstream> #include<math.h> using namespace std; int main()
C++ Дан целочисленный массив M*N.Разработать программу нахождения суммы особых элементов массива http://www.cyberforum.ru/cpp-beginners/thread1006341.html
Задача: Дан целочисленный массив M*N.Разработать программу нахождения суммы особых элементов массива. Особым считается элемент массива в своем столбце и наибольший в своей строке. Подскажите как осуществить поиск особого элемента.
C++ Непонятки с абстрактным классом У нуба возник вопрос :) Вот объявляю я абстрактный Inline класс. Ну под инлайн я имею ввиду, что он без cpp, реализация в H. #pragma once class HEAD { public: HEAD(void) { } подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.11.2013, 15:05     Список инициализации в конструктор C++11. Зачем?
programina, За шкафом же. Что есть усложнение? Для меня это упрощение. Хотя universal-initialization не так уж прост как хотелось бы, однако это упрощение и новая фича, которую удобно использовать.

Заради того, чтобы понять, что есть такое list-initialization можно ведь просто прочесть параграф 8.5.4 стандарта, хотя бы примеры посмотреть. Он довольно большой, дабы копировать его сюда.

Краткое изложение параграфа
List-initialization of an object or reference of type T is defined as follows:
-If T is an aggregate, aggregate initialization is performed
-Otherwise, if the initializer list has no elements and T is a class type with a default constructor, the
object is value-initialized.
-Otherwise, if T is a specialization of std::initializer_list<E>, an initializer_list object is
constructed as described below and used to initialize the object according to the rules for initialization
of an object from a class of the same type
-Otherwise, if T is a class type, constructors are considered. The applicable constructors are enumerated
and the best one is chosen through overload resolution (13.3, 13.3.1.7). If a narrowing conversion (see
below) is required to convert any of the arguments, the program is ill-formed.
-Otherwise, if the initializer list has a single element of type E and either T is not a reference type or
its referenced type is reference-related to E, the object or reference is initialized from that element; if
a narrowing conversion (see below) is required to convert the element to T, the program is ill-formed.
-Otherwise, if the initializer list has a single element of type E and either T is not a reference type or
its referenced type is reference-related to E, the object or reference is initialized from that element; if
a narrowing conversion (see below) is required to convert the element to T, the program is ill-formed.
-Otherwise, if the initializer list has no elements, the object is value-initialized.
-Otherwise, the program is ill-formed.


Добавлено через 41 секунду
Avazart, Копирования чего? Копирование элементов есть. Тогда о чем разговор и для чего?

Ну и к слову.

C++
1
2
3
4
struct X {
X(std::initializer_list<double> v);
};
X x{ 1,2,3 };
The initialization will be implemented in a way roughly equivalent to this:
C++
1
2
double __a[3] = {double{1}, double{2}, double{3}};
X x(std::initializer_list<double>(__a, __a+3));
assuming that the implementation can construct an initializer_list object with a pair of pointers.
 
Текущее время: 03:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru