Avatar billede ichiban Nybegynder
26. marts 2003 - 20:37 Der er 23 kommentarer og
1 løsning

Havd er dette ????

Socket::Socket() : m_sock ( -1 )
{
  memset ( &m_addr, 0, sizeof ( m_addr ));
}

': m_sock ( -1 )' er det arv i en eller anden form ? eller hvad er det ?
Avatar billede soreno Praktikant
26. marts 2003 - 20:42 #1
variablen m_sock bliver initialiseret til -1
Avatar billede soreno Praktikant
26. marts 2003 - 20:43 #2
Kaldes liste initialisering.
Avatar billede ichiban Nybegynder
26. marts 2003 - 20:46 #3
Men hvor står den der ? og ikke her:
Socket::Socket()
{
  m_sock ( -1 );
  memset ( &m_addr, 0, sizeof ( m_addr ));
}
Avatar billede arne_v Ekspert
26. marts 2003 - 20:49 #4
Konstruktionen bruges til følgende situation:

class A indeholder et objekt af typen class B

class B's constructor kaldes så på den måde i class A's
constructor:

A::A(int a, int b) : B(b)
Avatar billede arne_v Ekspert
26. marts 2003 - 20:51 #5
Nå du har allerede accepteret.

Hvis A indeholder en pointer til et objekt af typen B kan man
bare lave:

A::A(int a, int b)
{
  bo = new B(b);
}

men det kan man ikke når A indeholder selve objektet af typen B.

Derfor skal man have en speciel syntax.

Og man har så valgt den man har.
Avatar billede ichiban Nybegynder
26. marts 2003 - 20:54 #6
Aha jeg må kikke mere i koden, og se om jeg kan finde hoved og halen i den. Det er en class, til håndtering af sockets i linux.
Avatar billede arne_v Ekspert
26. marts 2003 - 20:54 #7
Konstruktionen bruges også til at kalde super klassers constructors med.

[men hvis det var eneste problem så kunne man godt have fundet
en anden syntax f.eks. sådan som Java gør det på]
Avatar billede arne_v Ekspert
26. marts 2003 - 20:57 #8
m_sock må være et objekt som er et member af Socket og man
kalder så dets constructor med -1 som argument.
Avatar billede soreno Praktikant
26. marts 2003 - 20:58 #9
Emnet er stort set ikke berørt i de 2 bøger jeg lige har bladret lidt rundt i. Men til gengæld fandt jeg lidt på nettet.

http://cplus.about.com/library/weekly/aa072302d.htm
http://www.clipx.net/ng/zc_ref/ng71d98.php
Avatar billede arne_v Ekspert
26. marts 2003 - 20:58 #10
Det er muligt at man også kan initialisere simple datatyper
på den måde.

Men dem kunne man ligeså godt have initialiseret normalt i
constructoren.
Avatar billede morw Nybegynder
26. marts 2003 - 20:58 #11
Kan du ikke lige smide en link til den socket class? Er det C eller C++?

Går ud fra det er C++ da der ikke er class'es i ren C, right? (Ja, jeg er ny inden for C)
Avatar billede arne_v Ekspert
26. marts 2003 - 21:00 #12
morw>

Ja - der er ikke class'es i C.
Avatar billede arne_v Ekspert
26. marts 2003 - 21:03 #13
Maz Spork har (ikke overraskende) en god forklaring i
sektion 4.3.7 !
Avatar billede ichiban Nybegynder
26. marts 2003 - 21:04 #14
Linket er her:

http://www.linuxgazette.com/issue74/tougher.html

Tak for svarene. :o)
Avatar billede soreno Praktikant
26. marts 2003 - 21:07 #15
Dette link fortæller også lidt om emnet:
http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6
Avatar billede soreno Praktikant
26. marts 2003 - 21:16 #16
En gratis c++ bog  - det kan man da ikke sige nej tak til.. :-)

http://maz.spork.dk/oopbog.html

Direkte link:
http://maz.spork.dk/oopbog.pdf
Avatar billede arne_v Ekspert
26. marts 2003 - 21:23 #17
Det var jeg ikke klar over.

Det er en fremragende bog.

Med små simple eksempler for han forklaret det mest komplekse
i C++ på yderst elegant vis.

[man skal selvfølgelig være opmærksom på at bogen er lidt gammel
og der er en del af de nye ting i C++ som ikke omtales: STL,
namespaces, exceptions etc.]
Avatar billede ichiban Nybegynder
26. marts 2003 - 21:26 #18
he he Jeg har også i gang med at downloade Mazs bog :o) Det går LANGSOMT.
Avatar billede morw Nybegynder
26. marts 2003 - 21:28 #19
Ikke på min ADSL ;-D Ellers en stor tyk bog efter dansk standard!
Avatar billede soreno Praktikant
26. marts 2003 - 21:29 #20
Ja, jeg ventede med at poste linket til jeg selv have hentet den..
;-)
Avatar billede arne_v Ekspert
26. marts 2003 - 21:30 #21
Jeg har brugt bogen i mange år - formentlig siden 1. udgave udkom
i 1991 (jeg kan ikke præcist huske så langt tilbage i tiden).
Avatar billede ichiban Nybegynder
26. marts 2003 - 21:32 #22
morv: Jeg har 14 Mb/sec (kollegie) og jeg syntes det er en smule mystisk. :o(
Avatar billede morw Nybegynder
26. marts 2003 - 21:38 #23
Så må du sige til de andre at de skal vente med en hente film :-D
Avatar billede arne_v Ekspert
26. marts 2003 - 21:45 #24
Eller så er der bare for mange der har læse denne tråd og downloader så der
er flaskehals i den anden ende !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester