Инициализация класса

189
08 мая 2018, 00:11

В чем разница между способами инициализации?

class A
{
public:
    A(int num): val(num) {};
private:
    int val;
};
int main (void)
{
    A a1 = 5;
    A a2{5};
    A a3 = {5};
    A a4(5);
    return 0;
}
Answer 1
A a1 = 5;

создается временный обьект A(5) и копируется в a1

 A a2{5};

создается обьект со значением

 A a3 = {5};

тот же вариант, что и в первом случаи

 A a4(5);

тот же вариант, что и во втором случаи, с той разницей, что вместо 5 может быть значение любого типа, который неявно может преобразоваться в int. Например: double, unsigned, char...

READ ALSO
C++ передача списка чисел

C++ передача списка чисел

Нужно передавать функции или конструктору список чисел определенного типа, например, int, uint8_t или uint32_tКак это сделать просто, производительно...

201
Чтение данных с HID устройства

Чтение данных с HID устройства

Передо мной стоит следующая задача: написать программный код в OC Windows в среде Borland C++ Builder, соотвественно, на языке С++, который позволит считывать...

152
Как выбраться с программистского дна?

Как выбраться с программистского дна?

Пользователи StackOverflow! Нужны дельные советы по этой довольно актуальной темеПредставьте всем знакомую ситуацию: есть диплом о высшем образовании...

155
Как отключить ключевое слово export в модулях javascript?

Как отключить ключевое слово export в модулях javascript?

Вчера попробовал новые javascript модули, я уже пользовался модулями в D и поэтому понимал что эта вещ хорошая, и плохо что в основных популярных...

219