--- Log opened Fri Feb 09 16:12:05 2018 16:12 -!- Nuclear [nuclear@mutantstargoat.com] has joined #megalikourasi 16:12 -!- Irssi: #megalikourasi: Total of 1 nicks [1 ops, 0 halfops, 0 voices, 0 normal] 16:12 -!- Irssi: Join to #megalikourasi was synced in 0 secs 16:13 -!- XXX-1244139498 [~george@wifi-232-195.wireless.ntua.gr] has joined #megalikourasi 16:13 <@Nuclear> geiaaa 16:13 < XXX-1244139498> geiaaaa 16:13 < XXX-1244139498> vasika den allaksa nickname, oti pire aytomata 16:13 <@Nuclear> sou allakse to nickname se XXX epidi to george kapoios to exei kanei register 16:13 -!- XXX-1244139498 is now known as gkops 16:14 <@Nuclear> opos ego exo to nuclear, an pas na mpeis san nuclear kai den baleis ton kodiko tou nickname, meta apo ligo tha sto allaksei se XXX 16:14 <@Nuclear> so anyway, pio aneta edo... pou les ta paradeigmata me to operator overloading pou sou eixa dosei itan os eksis: 16:14 <@Nuclear> prosthesi complex kai complex: 16:14 <@Nuclear> ComplexNum operator+(ComplexNum a, ComplexNum b) 16:14 <@Nuclear> { return ComplexNum(a.re + b.re, a.im + b.im); 16:15 <@Nuclear> } 16:15 <@Nuclear> pollaplasiazmos complex kai float: 16:15 <@Nuclear> ComplexNum operator *(ComplexNum c, float s) 16:15 <@Nuclear> { 16:15 <@Nuclear> return ComplexNum(c.re * s, c.im * s); 16:15 <@Nuclear> } 16:15 <@Nuclear> (etsi doulevei to a * 2.0) 16:16 <@Nuclear> kai gia na doulevoun kai ta dyo, prepei na diloseis KAI to operator*(float, ComplexNum) 16:16 <@Nuclear> opote: 16:16 <@Nuclear> ComplexNum operator *(float s, ComplexNum c) 16:16 <@Nuclear> { 16:16 <@Nuclear> return ComplexNum(c.re * s, c.im * s); 16:16 <@Nuclear> } 16:16 <@Nuclear> tora ta vlepeis sosta elpizo 16:17 < gkops> nai nai twra ola komple 16:17 -!- Nuclear changed the topic of #megalikourasi to: I kourasi einai megali 16:17 <@Nuclear> opote tora me ayta mporeis eykola na allakseis ton kodika tou fractal na xrisimopoiei operators pistevo, exeis kamia aporia ? 16:18 < gkops> oxi nomizw oti mporw na to kanw 16:18 < gkops> afoy perasame ton skopelo tis arxis 16:18 < gkops> mi lew kai megales kouventes vevaia xaxa 16:18 <@Nuclear> loipon akou kai kati allo pou den sto exo pei mexri stigmis alla einai xrisimo 16:19 <@Nuclear> epitides den sto eipa mexri tora gia na min se mperdepso 16:19 <@Nuclear> tha thymasai oti otan pername parametro se mia synartisi, i parametros antigrafetai kai i synartisi pairnei diko tis antigrafo, sosta? 16:21 < gkops> nai nai 16:21 <@Nuclear> otan ayti i parametros einai ena int, i ena float, ayto den einai provlima, giati i antigrafi tou einai ena assignment se mia alli thesi mnimis 16:21 <@Nuclear> pou ginetai me ena machine instruction 16:21 <@Nuclear> poly grigoro 16:21 <@Nuclear> alla otan pernas oloklira objects apo kapoia class san parametro, ola ta pedia tis classis prepei na antigrafoun 16:21 <@Nuclear> stin periptosi tou ComplexNum den einai provlima episis, giati exei mono 2 floats mesa 16:22 <@Nuclear> alla se megalytera antikeimena, den einai kali idea na antigrafeis ena tono dedomena apla gia na to xrisimopoiiseis san *input* se synartisi 16:22 <@Nuclear> px mesa stin add_complex (i sto operator+) to a kai to b den to peirazeis pote 16:22 <@Nuclear> apla diabazeis ti timi exoun ta re kai im tous 16:22 <@Nuclear> den xreiazetai na kaneis olokliro antigrafo tou kathe object gia na deis tis times aytes 16:22 <@Nuclear> einai perito 16:23 <@Nuclear> tha itan protimotero, kapos na pareis access sta original pedia tou original antikeimenou pou pernas san A parametro i B parametro 16:23 <@Nuclear> anti na to antigrapseis kai na diabaseis apo to antigrafo 16:23 <@Nuclear> symfoneis / akolouytheis to skeptiko mou ? 16:24 < gkops> nai mexri edw kala 16:24 <@Nuclear> oraia... an egrafes tin idia synartisi stin C pos tha mporouses na to kaneis ayto? 16:24 <@Nuclear> (tin add_complex) 16:24 <@Nuclear> tha mporouses anti na peraseis san parametro ComplexNum a 16:24 <@Nuclear> (pou tha ginei antigrafo tou structure (stin C) i tis class (stin C++).... 16:24 <@Nuclear> na peraseis pointer sto original antikeimeno 16:25 <@Nuclear> diladi an grapseis tin synartisi anti gia: 16:25 <@Nuclear> ComplexNum add_complex(ComplexNum a, ComplexNum b) 16:25 <@Nuclear> na tin grapseis san ComplexNum add_complex(ComplexNum *a, ComplexNum *b) 16:26 <@Nuclear> me ayto ton tropo den antigrafetai to object, giati den pernas to object, pernas ena pointer, opote antigrafetai to pointer mono (me ena machine instruction) kai mporeis na xrisimopoiiseis ayto to pointer kanontas to dereference gia na *deis* ta periexomena tou arxikou antikeimenou 16:26 <@Nuclear> Ayto tha to xrisimopoiouses ap'ekso os: 16:26 <@Nuclear> ComplexNum a, b, c; 16:26 <@Nuclear> c = add_complex(&a, &b); 16:26 <@Nuclear> giati einai pointers, opote thes ti dieythinsi san parametro 16:26 <@Nuclear> katanoito os edo ? 16:27 <@Nuclear> kai fysika tha allaze kai i idia i add_complex, giati prepei na kanei dereferences 16:27 <@Nuclear> tha ginotan: 16:27 <@Nuclear> ComplexNum add_complex(ComplexNum *a, ComplexNum *b) 16:27 <@Nuclear> { 16:27 < gkops> nai nai sto thewritiko kommati katanoito 16:27 < gkops> katse na dw kai to prkatiko twra 16:27 <@Nuclear> return ComplexNum(a->re + b->re, a->im + b->im); 16:27 <@Nuclear> } 16:27 <@Nuclear> ok ? 16:28 < gkops> ok nai 16:28 <@Nuclear> ayto einai kati pou tha mporouses na to kaneis kai stin C kai stin C++ 16:28 <@Nuclear> i C++ epidi anagnorizei oti ayto einai kati xrisimo 16:28 <@Nuclear> (to na min antigrafeis structs kai classes gia performance) 16:28 <@Nuclear> alla anangorizei kai oti ayto einai manoura giati prepei na kaneis dereferences pantou 16:28 <@Nuclear> prosthetei ena kainourio feature 16:28 <@Nuclear> ayto to feature legetai "reference" 16:29 <@Nuclear> to reference einai ousiastika pointer, alla krymeno pointer 16:29 <@Nuclear> diladi to xrisimopoieis akrivos opos tha xrisimopoiouses to idio to antikeimeno, oxi pointer se antikeimeno 16:29 <@Nuclear> kai ayto kanei aytomata dereference 16:29 <@Nuclear> opote 16:30 <@Nuclear> ayti tin "pio grigori" add_complex, stin C++ mporeis na tin grapseis anti gia pointers, me references os eksis: 16:30 <@Nuclear> ComplexNum add_complex(ComplexNum &a, ComplexNum &b) 16:30 <@Nuclear> { 16:30 <@Nuclear> return ComplexNum(a.re + b.re, a.im + b.im); 16:30 <@Nuclear> } 16:30 <@Nuclear> to & stis parametrous edo DEN einai to address operator pou exoume dei os tora 16:31 <@Nuclear> alla einai oti to a kai to b einai "references" 16:31 <@Nuclear> diladi pointers, pou omos xrisimopoiounte san kanonika antikeimena 16:31 <@Nuclear> otan to kaneis ayto, ap'ekso gia na tin kaleseis episis den xreiazetai na ta antimetopiseis san pointers 16:31 <@Nuclear> pernas parametrous akrivos opos tha pernouses an ginotan copy 16:31 <@Nuclear> ComplexNum c = add_complex(a, b); 16:32 <@Nuclear> kai epidi o compiler vlepei oti i add_complex pairnei references san arguments, ypologizei to address tou a kai tou b aytomata kai to pernaei 16:32 < gkops> aaaaaa malista 16:32 < gkops> se swzei apo poly kopo diladi 16:32 <@Nuclear> prosoxi omos sto eksis 16:32 <@Nuclear> afou ta references einai ousiastika pointer sto original "ekso" antikeimeno 16:32 <@Nuclear> an pas mesa sti synartisi kai kaneis a.re = 10; 16:33 <@Nuclear> atyo tha allaksei to original a pou eixes ap'ekso ekei pou tin kaleses 16:33 <@Nuclear> (giati einai to idio san na pernouses pointer, kai na ekanes a->re = 10; 16:33 <@Nuclear> ) 16:33 <@Nuclear> opote erxomaste sto teleytaio pragma pou thelo na sou po simera 16:34 <@Nuclear> otan pernas reference se synartisi (i kai pointer), kai o *monos* logos pou xrisimopoieis reference (i pointer) einai gia performance, kai OXI epidi THELEIS na allaksei i synartiis kati sto ekso antikeimeno 16:34 <@Nuclear> PANTA, tha diloneis to argument me const mprosta 16:34 <@Nuclear> diladi 16:34 <@Nuclear> ComplexNum add_complex(const ComplexNum &a, const ComplexNum &b) 16:35 <@Nuclear> etsi otan vlepeis ayti ti synartiis se ena header file, ksereis oti de tha sou peiraksei tipota otan tin kaleseis 16:35 <@Nuclear> kai an katalathos kaneis modify kati mesa sti synartisi xoris na to thes, o compiler tha sou bgalei error 16:35 <@Nuclear> ayto loipon 16:35 <@Nuclear> to na pernas const references 16:35 <@Nuclear> gia logous performance 16:35 <@Nuclear> einai toso synithismeno, pou tha elega oti einai idiomatic stin C++ 16:36 <@Nuclear> kai otan vlepeis parametro me reference (o pointer) xoris const, katalabaineis oti tha thelei na sto kanei modify 16:36 <@Nuclear> kai to idio isxyei kai sta operators pou sou elega prin 16:36 <@Nuclear> thelo na min ta diloseis: ComplexNum operator+(ComplexNum a, ComplexNum b); opos elega mexri tora 16:37 <@Nuclear> alla: 16:37 <@Nuclear> ComplexNum operator+(const ComplexNum &a, const ComplexNum &b) 16:37 < gkops> a malista katalava 16:37 <@Nuclear> olos o ypoloipos kodikas menei idios (mias kai ta references ginontai aytomata dereference kai address-of opou xreiazetai) alla kerdizeis to performance tou na min kaneis antigrafa ton objects 16:38 <@Nuclear> kai tora pao na tin kano :) 16:38 < gkops> ara prepei na mou ginei deyteri fysi 16:38 <@Nuclear> ksanadiabase ta ayta kai prospathise na to kaneis 16:38 <@Nuclear> kai oti apories exeis, pes sto skype 16:38 < gkops> ok egine tha ta meletisw 16:38 <@Nuclear> se ayto to kanali tha ksanampoume otan theloume na poume poly text, pros to paron bgaino 16:38 < gkops> thanks gia to mathima ta leme meta :) 16:38 <@Nuclear> no problem 16:38 <@Nuclear> ta leme --- Log closed Fri Feb 09 16:38:47 2018