Gå til innhold

Sourcecode: Umulige tekststrenger


Anbefalte innlegg

Videoannonse
Annonse

Angående stilen jeg bruker i koden:

const char* er det samme som char const*

 

..har jeg fått et par spørsmål om hvorfor jeg har gått for denne løsningen. Jeg svarte noe slikt:

 

Jeg skulle kanskje utelukkende sagt at "dette gjelder C++" fremfor "C/C++".

 

char* foo; // *Er* den vanlige måten å uttrykke dette på i C++ i motsetning til C der..

chac *foo; // ..dette er vanlig.

 

Så i C++ har man gjerne kun én "peker til" -variabel pr. linje for å unngå forvirringer og ting som ikke ser bra ut.

 

char const* foo; // er noe utradisjonellt i både C og C++.

 

Dette er jeg klar over, men jeg leste noe om dette ("C++ Templates: The Complete Guide" - D. Vandevoorde, Nicolai M. Josuttis) som gjør at jeg fikk lyst til å "venne" meg til denne måten å skrive det på. Det gikk noe slikt som dette her:

 

Vi er begge enige om at uttrykkene:

 

const int i = 1;

 

..og..

 

int const i = 1;

 

er like, så jeg kunne godt gått for den som er mer vanlig.

 

 

Men:

 

int* const i = 1;

 

..er unik, og betyr at det er *pekeren*, ikke int'en, som er en konstant.

 

Hadde vi snudd på dette;

 

const int* i = 1;

 

..ville uttrykket fått en helt annen betydning; det er int'en som er en konstant, ikke pekeren.

 

Så hvis vi holder oss til å holde const til høyere for det som skal være konstant; stemmer det hele tiden. Pekere eller ikke:

 

int const i = 1; // [konstant int]
int* const i = 1; // [konstant peker] til int
int const* i = 1; // peker til [konstant int]

 

 

En annen grunn er typedef's:

 

typdef int* MinInt;

typedef MinInt const cpMinInt; // konstant *peker* til int

 

int'en er altså ikke konstant her, noe som stemmer bra.

 

Hadde vi byttet om, ville vi fått det annerledes: peker til konstant int, ikke en konstant peker altså.

 

Vi får håpe det ikke blir for mye på en gang som er utradisjonellt for leserene her. Kanskje jeg skal slutte å si C/C++ og utelukkende si at "dette gjelder C++". :)

Lenke til kommentar
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...