Jaka jest różnica między następującymi dwiema dwiema inicjacjami?Inicjalizacja klasy C++ z nawiasami i bez nawiasów
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
Jaka jest różnica między następującymi dwiema dwiema inicjacjami?Inicjalizacja klasy C++ z nawiasami i bez nawiasów
class Pod {
public:
int a, b;
};
Pod *p1 = new Pod;
Pod *p2 = new Pod();
W pierwszym przypadku celem jest pozostawiony niezainicjowanego, podczas gdy w drugim przypadku, gdy przedmiot jest gwarancją wartości inicjalizacji, który w tym przypadku, jak jest on typu POD oznacza to zerowej inicjowane
Chociaż różnica jest zasadniczo nie istnieje w przypadku "int", w pierwszym przypadku członkowie są domyślnie inicjowani, a nie niezainicjowani. –
@JerryCoffin: Tak, powinienem być bardziej przejrzysty, ta część wynika również z faktu, że jest to POD, dla którego * domyślna inicjalizacja * oznacza, że obiekt jest * pozostawiony niezainicjowany * –
@ DavidRodríguez-dribeas: ... ale w C++ 11, nie jest ograniczone do typów POD (IIRC, powinno to dotyczyć nieco szerszej kategorii wszystkich typów trywialnie kopiowalnych). –
Jak powiedział JamesMcLaughlin, nie ma różnicy, co więcej, nie ogranicza się do POD. – MFH
@ DavidRodríguez-dribeas Jak to? –
@JamesMcLaughlin: Przeczytaj sekcję 8.5 w standardzie :) –