Jest to opisane na cppreference, ale w nieco trudne do odczytania format:
Ciało definicji funkcji jakiegokolwiek konstruktora przed nawiasem otwierającym instrukcji złożonej, może obejmować inicjator użytkownika Lista, którego składni postać okrężnicy :
, a następnie oddzielone przecinkami jednego lub większej liczby członków -inicjalizatorów, z których każdy ma następującą składnię
...
klasy lub identyfikator-Brace-startowe lista (2) (od C++ 11)
...
2) Inicjuje bazę lub członka nazwany przez wykładowa lub-identyfikator użyciu list-inicjalizacji (który staje wartość inicjalizacji gdy lista jest pusta i agregatów inicjalizacji gdy inicjalizacja agregat)
Co to próbuje powiedzieć, że X::X(...) : some_member{some_expressions} { ... }
powoduje, że element klasy some_member
jest inicjowany z poziomu some_expressions
. Biorąc
struct X {
Y y;
X() : y{3} {}
};
dane członkiem y
zostaną zainicjowane w ten sam sposób lokalna zmienna Y y{3};
zostanie zainicjowany.
W twoim przypadku std::make_shared<sf::Font>(font)
generuje wartość, która zostanie użyta do zainicjowania elementu klasy m_font
.
spróbuj googling: lista inicjalizatorów nawiasy klamrowe – Shloim
Pytasz o listę klamrową inicjalizatora, czy pytasz o make_shared? Współdzielone wskaźniki Google, jeśli to drugie. –
Tutaj: http: // stackoverflow.com/pytania/24953658/ – Ynon