Eventuali duplicati:
Difference between const declarations in C++const nella dichiarazione della funzione
#include <iostream>
class Bar{};
void foo(const Bar x){} //l5
void foo(Bar x){} //l6
void foo(Bar const x){} //l7
////pointer functions
void foo(const Bar* x){} //l11
void foo(Bar* x){} //l12
void foo(Bar* const x){} //l13
uscita del compilatore: (per farla breve l5
, l6
, l7
conflitto, ma solo l12
, l13
conflitto)
untitled.cpp:6:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:7:6: error: redefinition of ‘void foo(Bar)’
untitled.cpp:5:6: error: ‘void foo(Bar)’ previously defined here
untitled.cpp:13:6: error: redefinition of ‘void foo(Bar*)’
untitled.cpp:12:6: error: ‘void foo(Bar*)’ previously defined here
Cosa succede?
- Qual è il significato di ciascuna delle dichiarazioni
- Perché tutte 3 le dichiarazioni in conflitto con le funzioni degli oggetti, ma solo 2 con funzioni di puntatore?
- Si prega di elaborare che il conflitto è tra il
l12
el13
, anche sel12
non contieneconst
parola chiave - Veramente dispiaciuto se domanda banale
Re la tua prima frase: non ha importanza per il compilatore, in questo particolare contesto. In generale, tuttavia, 'const' modifica ciò che lo precede, e mettendo sistematicamente' const' dopo ciò che modifica (ad esempio 'const const', e non' const int') rende il codice più leggibile. –