2012-08-10 15 views
31

Jeśli utworzę obiekt const (np. W kodzie poniżej), nie można w tym celu wykonać przypisania elementu. Czy w każdym razie jest jakikolwiek pożytek z tworzenia obiektu const?Co to jest użycie stałego obiektu związku?

union un 
{ 
    int i; 
    float f; 
    char c; 
}; 
const union un a; 
/// ! a.i = 10; error. 
+1

W "c" nierzadko interpretuje się związek za pośrednictwem innego członka niż ten, który został ostatnio ustawiony. Oczywiście może to być "const volatile" - tzn. Nie zmienimy go, ale ktoś inny może i musimy to zobaczyć. – BoBTFish

+4

Nie, jeśli cały cholerny związek jest "const". – Puppy

+0

@Xeo, to nie kompilowałoby się bez części "związkowej", gdy testowałem z gcc. –

Odpowiedz

33

Nadal można zainicjować unii następująco:

const union un a = { .i = 100 }; 

następnie używać go w kodzie.

+3

W języku C oznacza to. W C++, myślę, że mógłbyś napisać konstruktora i takie rzeczy. – Xeo

+0

Haha, pokonałeś mnie przez 35 sekund. :-) –

+0

Tego nie wiedziałem. W ten sposób można zainicjować dowolnego członka związku! – cirronimbo

15

Nadal można przypisać go w deklaracji, na przykład tak:

const union un a = {0}; 

Update: że notacja ustawia pierwszy członków związku.

+2

Który członek wykonuje ten zestaw? –

+0

@ R.MartinhoFernandes, wszyscy członkowie, do zera. –

+0

Tak, ale można to zrobić tylko po to, aby przypisać tylko pierwszego członka (lub ustawić wszystko na zero, jak wspomniałeś)! – cirronimbo

Powiązane problemy