Неправильный выбор конструктора

159
24 апреля 2019, 05:00

Почему эта программа выводит doubledouble, я же явно указываю int?!

struct A {
    explicit A(int) {
        std::cout << "int";
    };
    A(double) {
        std::cout << "double";
    };
};

int main() {
    A a1 = 42;
    A a2 = int(42);
}
Answer 1

Используя синтаксис copy initialization вы как раз явно указываете не использовать explicit конструктор. Для вызова explicit конструктора следует использовать синтаксис direct list initialization:

a1{42};
A a2{int{42}};
// выводится intint
READ ALSO
Обращение к структуре ProcessStartupInformation через wmi в C++

Обращение к структуре ProcessStartupInformation через wmi в C++

Пытаюсь разобраться с wmi, использую последний снипет из статьи Calling a Provider Method Не могу понять как указать ProcessStartupInformation для Win32_ProcessCreate на примере...

157
Задача K Минимум в Полиноме

Задача K Минимум в Полиноме

Вот такая задача на Нахождение K-ого минимума, написал такой код(На базовых примерах работает, на тестах все кроме 1 завалены): Помогите найти...

121
Как работает vector?

Как работает vector?

Почему пример ниже выводит 6?

143
Сделать return массива

Сделать return массива

Не получается вернуть массив через функциюЯ создал функцию, которая создает массив и заполняет все его элементы двойками, но не могу вернуть...

159