Avatar billede cronck Nybegynder
02. december 2005 - 20:48 Der er 16 kommentarer og
1 løsning

Simpel Klasse

Jeg har siddet og kigget lidt på det her eksempel.
http://www.functionx.com/cpp/examples/simpleclass.htm

Der er nogle småting som at jeg ikke helt er sikker på.
Hvorfor for eks. sætte disse 2 ind?

Cube::Cube()
{
}

Cube::~Cube()
{
}

Og hvorfor kalde Cube funktionen via. "Cube cube;" og "Cube de;" ?
Avatar billede cronck Nybegynder
02. december 2005 - 20:58 #1
Ved samme lejlighed kunne jeg lige spørge om noget andet 'simpelt'... :o)
Hvad er 'void' - Såvidt jeg forstår er det en funktion...
Men hvad er en klasse så helt præcis, hvis ikke at det er en funktion?
Avatar billede bertelbrander Novice
02. december 2005 - 20:58 #2
Cube::Cube() er en konstructor, den bliver kaldt når der oprettes en instans af class'en
Cube::~Cube() er en destructor, den bliver kaldt når instansen nedlægges.
Da de ikke gør noget er der sådan set ikke nogen grund til at have dem.
Avatar billede cronck Nybegynder
02. december 2005 - 20:59 #3
Ahhhh....
Hvis at jeg lægger noget ind i "Cube::Cube()" for eks. udskriver en streng, vil den streng blive udskrevet hver gang at en noget kode henter noget fra Cube?
Avatar billede bertelbrander Novice
02. december 2005 - 21:00 #4
void er en "tom" type. Den bruges på steder hvor man skal angive en type, f.ex. som returværdi for en funktion, men der ikke skal bruges noget.
Man kan ikke oprette et objekt af typen void, men godt en pointer til void.
Avatar billede cronck Nybegynder
02. december 2005 - 21:02 #5
Hehe.. Det sidste fattede jeg så 'hat' af :-)
Avatar billede bertelbrander Novice
02. december 2005 - 21:03 #6
#include <iostream>

class X
{
public:
  X()
  {
      std::cout << "X::X()" << std::endl;
  }
  ~X()
  {
      std::cout << "X::~X()" << std::endl;
  }
};

int main()
{
  X x;
  std::cout << "Hello World" << std::endl;
}

Dette lille program vil udskrive:
X::X()
Hello World
X::~X()
Avatar billede cronck Nybegynder
02. december 2005 - 21:05 #7
Nu kan jeg se pointen... :o)
Avatar billede bertelbrander Novice
02. december 2005 - 21:05 #8
void func1()
{
}

Betyder at func1 er en funktion der ikke returnerer noget.

int func2()
{
  return 1;
}

Betyder at func2 er en funktion der returnerer en int.

int func3(void)
I C++ er func3 det samme som func2, det er det ikke i C
Avatar billede cronck Nybegynder
02. december 2005 - 21:09 #9
Hmm.. ligesom for eks:
bool myfunc()
{
return TRUE;
}
// Ved ikk om den er helt korrekt, skrev den bare lige hurtigt :-)
Avatar billede bertelbrander Novice
02. december 2005 - 21:09 #10
Constructoren bliver brugt til at initialicere objectet, destructoren til at rydde op.

En fil, f.ex std::ofstream kan bruge constructoren til at åbne filen, og destructoren til at lukke den.

Et andet eksempel:
#include <iostream>
#include <string>

class X
{
public:
  X(const std::string& aStr):
      Str(aStr)
  {
  }
  void Do()
  {
      std::cout << Str << std::endl;
  }
private:
  std::string Str;
};

int main()
{
  X x("Hello World");
  x.Do();
}
Avatar billede bertelbrander Novice
02. december 2005 - 21:11 #11
MyFunc returnerer en bool (bør være true ikke TRUE).

Man bruger "void *" som en pointer der kan pege på hvad som helst.
Avatar billede cronck Nybegynder
02. december 2005 - 21:11 #12
Jeg har bemærket fra andre spm. i denne kategori at du ikke samler på point... Hvorfor benytter du ikke din ekspertise til at skrive et par gode artikler herinde?
Avatar billede cronck Nybegynder
02. december 2005 - 21:12 #13
mente bare at bools skulle stå med store bogstaver...
Avatar billede bertelbrander Novice
02. december 2005 - 21:21 #14
I windows bruger man TRUE og FALSE, men det er BOOL (i virkeligheden en int) standard C++ bruger bool og true/false

Jeg har flere gange overvejet at lave en dansk tutorial, men har ikke tid nok.
Avatar billede cronck Nybegynder
02. december 2005 - 21:29 #15
Så er det jo dér jeg har den idé fra :-)

Ærgeligt at du ikke har tid nok... Skal jeg beholde point eller vil du for én gangs skyld tage imod dem?
Mange tak for hjælpen.
Avatar billede bertelbrander Novice
02. december 2005 - 21:32 #16
Du må gerne beholde dem.
Avatar billede cronck Nybegynder
02. december 2005 - 21:32 #17
Ok... Endnu engang, tak! ;-)
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