Wpis z mikrobloga

@kuhar: gcc domyślnie kompiluje z

-std=gnu++03
Cytując n3337 (

8.3.4 dcl.array/1
):

D1 [ constant-expression*opt ] attribute-specifier-seq*opt


Inaczej mówiąc, jeśli wstawisz coś co nie jest niczym lub wyraƶeniem stałym to nie podpada pod tą regułkę (ani ƶadną inną) gramatyki języka.
  • Odpowiedz
@Jonarz: bo "surowe" wskazniki sa niesamowicie niebezpieczne, predzej czy pozniej cos zacznie cieknac, ktos zacznie niszczyc nieswoje itp.

moznaby uzyc

std::make_unique
czy

std::make_shared
, ale po co, skoro jest

std::vector
ponadto tablice dynamiczne nie maja jakiejkolwiek przewagi nad

std::vector
  • Odpowiedz
@Jonarz: new/delete przyda Ci się jeszcze jak będziesz pisał niskopoziomowy kod lub bawił się w programowanie obiektowe (mam na myśli wskaźniki typu "wskaźnik na klasę bazową" wskazujące na klasy dziedziczone) i w wielu innych sytuacjach, ale po co korzystać z new/delete kiedy jedyne, co potrzebujesz, to tablica dynamiczna, a do tego masz vector jak poprzednicy powiedzieli.
  • Odpowiedz
@Flood: Nie prawda, jedyną sytuacją jaką sobie wyobrażam która narzuca użycie new (poza oczywiście gadaniem z dziwnym api) jest klasa z prywatnym konstruktorem tworzona przez frienda. W nowym C++ std::unique_ptr i referencje, nic więcej nie jest potrzebne.
  • Odpowiedz