- en D_ se refiere a funciones miembro que pueden ser tratadas
- sintácticamente como campos de esa clase/estructura.
-
- Ejemplo::
-
- class Foo {
- int data() { return _data; } // propiedad de lectura
- int data(int value) { return _data = value; } // de escritura
- private int _data;
- }
- Foo f = new Foo;
- f.data = 1; // llama a f.data(1)
- int i = f.data; // llama a f.data()
-
- Además tipos nativos, clases, estructuras y expresiones tienen
- *properties* predefinidos, por ejemplo:
-
- ``sizeof``:
- tamaño ocupado en memoria (ejemplo: ``int.sizeof`` -> 4).
-
- ``init``:
- valor de inicialización por omisión (ejemplo: ``float.init`` -> *NaN*
- [#dnan]_).
-
- ``stringof``:
- representación textual del tipo (ejemplo: ``(1+2).stringof`` -> ``"1
- + 2"``).
-
- ``mangleof``:
- representación textual del tipo *mutilado* [#dmangle]_.
-
- ``alignof``
- alineación de una estructura o tipo.
-
- Estos son solo los *properties* predefinidos para todos los tipos, pero
- hay una cantidad considerable de *properties* extra para cada tipo.
-
- Más información sobre *properties* de clases en
- http://www.digitalmars.com/d/1.0/property.html#classproperties
- y sobre *properties* predefinidos en
- http://www.digitalmars.com/d/1.0/property.html
-
-
-.. [#drefsem] Semántica de referencia significa que el tipo es tratado como
- si fuera un puntero. Nunca se hacen copias del objeto, siempre se pasa
- por referencia.
-.. [#dslicing] Este problema se da en C++ cuando se pasa una clase derivada
- a una función que acepta una clase base por valor como parámetro. Al
- realizarse una copia de la clase con el constructor de copia de la clase
- base, se pierden (o *rebanan*) los atributos de la clase derivada, y la
- información de tipos en tiempo de ejecución (*RTTI*).
-.. [#dvalsem] Semántica de valor significa que el tipo es tratado como
- si fuera un valor concreto. En general se pasa por valor y se hacen
- copias a menos que se utilice explícitamente un puntero.
-.. [#dnan] Del inglés *Not A Number*, es un valor especial que indica que
- estamos ante un valor inválido.
-.. [#dmangle] *Name mangling* es el nombre dado comunmente a una técnica
- necesaria para poder sobrecargar nombres de símbolos. Consiste en
- codificar los nombres de las funciones tomando como entrada el nombre de
- la función y la cantidad y tipo de parámetros, asegurando que dos
- funciones con el mismo nombre pero distintos parámetros (sobrecargada)
- tengan nombres distintos.
+ en D_ se refiere a funciones miembro que pueden ser tratadas
+ sintácticamente como campos de esa clase/estructura.
+
+ Ejemplo::
+
+ class Foo {
+ int data() { return _data; } // propiedad de lectura
+ int data(int value) { return _data = value; } // de escritura
+ private int _data;
+ }
+ Foo f = new Foo;
+ f.data = 1; // llama a f.data(1)
+ int i = f.data; // llama a f.data()
+
+ Además tipos nativos, clases, estructuras y expresiones tienen
+ *properties* predefinidos, por ejemplo:
+
+ ``sizeof``:
+ tamaño ocupado en memoria (ejemplo: ``int.sizeof`` -> 4).
+
+ ``init``:
+ valor de inicialización por omisión (ejemplo: ``float.init`` -> *NaN*
+ [#dnan]_).
+
+ .. [#dnan] Del inglés *Not A Number*, es un valor especial que indica que
+ estamos ante un valor inválido.
+
+ ``stringof``:
+ representación textual del tipo (ejemplo: ``(1+2).stringof`` -> ``"1
+ + 2"``).
+
+ ``mangleof``:
+ representación textual del tipo *mutilado* [#dmangle]_.
+
+ .. [#dmangle] *Name mangling* es el nombre dado comunmente a una técnica
+ necesaria para poder sobrecargar nombres de símbolos. Consiste en
+ codificar los nombres de las funciones tomando como entrada el nombre de
+ la función y la cantidad y tipo de parámetros, asegurando que dos
+ funciones con el mismo nombre pero distintos parámetros (sobrecargada)
+ tengan nombres distintos.
+
+ ``alignof``
+ alineación de una estructura o tipo.
+
+ Estos son solo los *properties* predefinidos para todos los tipos, pero
+ hay una cantidad considerable de *properties* extra para cada tipo.
+
+ Más información sobre *properties* de clases en
+ http://www.digitalmars.com/d/1.0/property.html#classproperties y sobre
+ *properties* predefinidos en
+ http://www.digitalmars.com/d/1.0/property.html
+