Estoy realmente confundido. Estoy leyendo TC++ PL de Bjarne Stroustrup (edición especial, 19ª impresión, septiembre de 2010). Permítanme citar una parte del libro, destacando mi confusión:¿Es un typedef una definición?
char ch;
string s;
int count = 1;
const double pi = 3.1415926535897932385;
extern int error_number;
const char* name = "Njal";
const char* season[] = { "spring", "summer", "fall", "winter" };
struct Date { int d, m, y; };
int day(Date* p) { return p->d; }
double sqrt(double);
template<class T> T abs(T a) { return a<0 ? -a : a; }
typedef complex<short> Point;
struct User;
enum Beer { Carlsberg, Tuborg, Thor };
namespace NS { int a; }
Como puede verse a partir de estos ejemplos, una declaración puede hacer más que simplemente asociar un tipo con un nombre. La mayoría de estas declaraciones también son definiciones; es decir, también definen una entidad para el nombre al que se refieren. Para ch, esa entidad es la cantidad apropiada de memoria que se utilizará como variable: se asignará la memoria . Por día es la función especificada. Para la constante constante , es el valor 3.1415926535897932385. Para Fecha, esa entidad es un nuevo tipo. Para Point es el tipo complejo para que Point se convierta en un sinónimo para el complejo. De las declaraciones anteriores, sólo éstos no son también definiciones:
double sqrt(double);
extern int error_number;
struct User;
typedef complex<short> Point <-- WTF;
no es la frase en negrita en conflicto con la lista que figura a continuación es? ¿Es un typedef solo una declaración o también una definición? ¿Es esto un error en el libro?
'bjarne-stroustrup' es una etiqueta ahora? –
Parece que ha sido una etiqueta por un tiempo. –