Código C:
Ver original
#include <iostream> using namespace std; class clase { float a,c; public: clase(int = 0, int = 0); clase & funcion1(int,int); clase funcion2(int); friend ostream & operator<<(ostream &, const clase &); }; clase::clase(int a_, int c_) : a(a_), c(c_) {} clase & clase::funcion1(int i, int j) { a += i; c += j; return *this; } clase clase::funcion2(int x) { a *= x; c *= x; return *this; } ostream & operator<<(ostream & os, const clase & clas) { os << "(" << clas.a << "," << clas.c << ")"; return os; } int main() { clase pa, pb,a,b; [I][B]pb = pa.funcion1(10,10).funcion1(10,10).funcion2(2).funcion2(3).funcion1(5,5);[/B][/I] cout << pa << endl; cout << pb << endl; return 0; }
Está claro que las funciones 1 y 2 están puestas para ir con cuidado, pero mi pregunta se refiere al operador . (se dice así?). Es decir, ¿que condiciones se tienen que dar para construir una sentencia de este tipo? ¿Cómo se lee esa linea?
El resultado que da el programa es (40,40) y (125,125)
En cambio si pongo esto:
Código:
el resultado en pantalla es el siguiente:b = a.funcion2(3).funcion1(5,5);
(0,0) y (5,5)
Gracias.