/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Trick question of the day: const, * og &
Fra : Bjarke Dahl Ebert


Dato : 13-08-02 14:25

Hej gruppe,

Hvorfor compilerer følgende uden problemer i MSVC?

const int i = 1;
int* p;

const int*& q = p;

q = &i;

*p = 2; // i er nu 2!



Jeg gætter på at det er en fejl i MSVC.

Jeg ville have gættet at jeg kunne skrive "const int* const& q = p;"
(hvorved "q=&i" ville give compile-fejl som det burde), men ikke "const int
* & q = p;".



Mvh. Bjarke






 
 
Mogens Hansen (13-08-2002)
Kommentar
Fra : Mogens Hansen


Dato : 13-08-02 16:13


"Bjarke Dahl Ebert" <bebert@worldonline.dk> wrote in message
news:3d5908c2$0$33573$edfadb0f@dspool01.news.tele.dk...

> Jeg gætter på at det er en fejl i MSVC.

Det er en fejl.
Det er dækket af §8.5.3-4 i C++ Standarden.

En god regel:
Hvis man er i tvivl om noget er lovligt C++ (eller C) eller ej, så prøv at
oversætte det med Comeau compileren:
http://www.comeaucomputing.com/tryitout/

error: a reference of type "const int *&" (not const-qualified) cannot be
initialized with a value of type "int *"
const int*& q = p;
^

Det er ualmindeligt sjældent den tager fejl - jeg kan ikke huske at have
oplevet det.

g++ 3.1 accepterer det heller ikke:
initialization of non-const reference type 'const int*&' from rvalue of type
'int*'

Venlig hilsen

Mogens Hansen





Søg
Reklame
Statistik
Spørgsmål : 177485
Tips : 31964
Nyheder : 719565
Indlæg : 6408408
Brugere : 218885

Månedens bedste
Årets bedste
Sidste års bedste