Hibák az osztályokban

Keressük meg a hibát az alábbi kódrészletekben!
a)

class A

{ 

      int a;

public:

      f()const

      {

            a++;

      }

};

 

b)

class A

{

      int a;

      static void f(){a++;}

};

  

c)

class C

{

      const int x=2;

};


d)

class A

{

      static int c=3;

};







A megoldásért kattints ide!
a)
Konstans tagfüggvények nem módosíthatják a tagváltozókat. Két módon javíthatjuk ki:
- a mutable kulcsszót használjuk, amely pont ezt teszi lehetővé egy tagváltozóra:
   mutable int a;
- eltávolítjuk a konstanst a tagfüggvény deklarációjából

b) Statikus függvényből nem érjük el a nem statikus függvényeket és tagváltozókat (nem megy át a this pointer). Vagy a tagváltozót tesszük statikussá, vagy a függvényt nem azzá.

c) és d) Csak konstans és statikus tagváltozónak adhatunk így kezdeti értéket. A csak konstans tagváltozót konstruktor inicializálólistájáról inicializáljuk, a csak statikusat külön a definiáláskor (általában a cpp-ben).







2008.02.06. 20:37:23 |  Permalink  |  Hozzászólások száma: 4  |  Tárgyszavak: Osztályok


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások


Dániel Dániel  (2016.02.16. 1:39:15)

c) JAVÍTÁS: (A nemkonstans osztályszintű adattagok osztálytörzsön belüli inicializálását továbbra is tiltja.)

Dániel Dániel  (2016.02.16. 1:37:19)

c) Az ISO C++11 szabvány már megengedi az objektumszintű adattagok deklarációban történő inicializálását. (A nemkonstans osztályszintű adattagok deklarációban történő inicializálását továbbra is tiltja.)

Dániel Dániel  (2016.02.16. 1:32:42)

a) A "Konstans tagfüggvények nem módosíthatják a tagváltozókat." állítást érdemes pontosítani: "Konstans tagfüggvények nem módosíthatják a nemmutable objektumszintű tagváltozókat.". Az osztályszintű, azaz a statikus tagváltozókat módosíthatják a konstans tagfüggvények is. Érdemes az állítást kiegészíteni is: "Konstans tagfüggvények nem hívhatják meg a nemkonstans objektumszintű tagfüggvényeket.".

#include"AI.h" #include"AI.h"  (2015.01.20. 14:01:31)

Az a) feladatban 'f' függvény előtt hiányzik a void