Archiwum kategorii ‘D’
[D] Struktury w D
W języku C++ różnica pomiędzy klasą i strukturą sprowadza się w zasadzie do domyślnego kwalifikatora dostępu do składowych. W języku D różnica jest jednak głębsza
W D
- struktury są typami wartości (value type) podczas gdy klasy są typami referencyjnymi (reference type).
- brak dziedziczenia i interfejsów
- pamięc domyślnie alokowana na stosie
struct ColorT( T ) {
T r;
T g;
T b;
T a;
};
alias ColorT!(int) Color;
struct Material {
Color ambient;
Color diffuse;
Color specular;
};
Inicjalizacja struktur
Statyczna
static Material material = {
ambient : {255,0,0,255} ,
diffuse : {0,255,0,255},
specular : {255,0,0,255}
};
Dynamiczna
Polega na użyciu istniejącego egzemplarza typu
Material material;
m.diffuse = { r:255, g:127, b:10, a:255};
m.specular = { r:127, g:127, b:0, a:255};
m.ambient = { r:255, g:255, b:0, a:255};
Material material2 = material;
Przeciążony operator opCall
struct Material {
...
static Material opCall(Color amb, Color diff, Color spec) {
Material m ;
m.ambient = amb;
m.specular= spec;
m.diffuse = diff;
return m;
}
...
}
Material material = Material(ambientColor, diffuseColor, specularColor);