Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.

Podobné prezentace


Prezentace na téma: "Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance."— Transkript prezentace:

1 Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka

2 Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance – proměnná typu třída

3 Přiřazování objektů class test { int a,b; public: void fun1(int i, int j){a=i;b=j} void show()(cout << a<< ’ ’<

4 Předávání objektů funkcím hodnotou class test { int a; public: test(int i){a=i} int get_a()(return a;) }; int kva_a(test x) // kva_a přebírá argument třídy test { return x.get_a()* x.get_a(); // Provede se kvadrát argumentu } int main() { test a(5),b(6); // a a b jsou případem třídy test cout << kva_a(a)<< ”\n”; // Vypíše číslo 25 cout << kva_a(b)<< ”\n”; // Vypíše číslo 36 return 0; }

5 Předávání objektů funkcím adresou class test { int i; public: test(int n) {i=n;} void set_i(int n) {i=n;} int get_i() {return i;} }; void sqr_it(test *o) { o->set_i(o->get_i() * o->get_i()); //Nastaví o.i na kvadrát. // To ovlivní volající argument. cout get_i(); } // Vypíše se : Hodnota kopie argumentu i je: 25 int main() { test a(5); sqr_it(&a); // Předá adresu a do sqr_it() cout << "a v main()ma po zmene hodnotu: "; cout << a.get_i(); //Vypíše: a v main() ma po zmene hodnotu: 25 return 0; }

6 Vrácení objektů funkcemi class test { char a[100]; public: void show(){cout << a << ”\n”;} void set_a(char *str)(strcpy(a,str);) }; test inp() // návratová funkce typu test { char a[100]; test str; // vytvoří se lokální objekt str cout << “Vloz retezec:”; // načtení řetězce do a cin >> a; str.set(a); // kopie řetězce do str.a return str; //vrácení řetězce do str } int main() { test O1; //O1 je případem třídy test O1=inp(); //přiřazení funkce objektu O1.show(); //vypíše řetězec na obrazovku return 0; }

7 Rozdíl mezi ukazatelem a referencí ► nová možnost v C++ „reference“ ► ukazatele (pointery)  chci-li znát přímou hodnotu odkazovanou pointerem, musím jej dereferencovat  proto musím vždy vědět, jestli proměnná je ukazatel  přiřazením a := b, kde b je ukazatel, dojde ke zkopírování ukazatele. Vzniknou tedy dva ukazatelé na stejné místo ► reference  není rozdíl mezí proměnnou s přímou hodnou a její referencí  tím pádem není třeba provádět dereference  takže přiřazením a := b, kde b je reference, dojde ke zkopírování přímé hodnoty proměnné ► reference nemůže ukazovat na NULL

8 Kopírovací konstruktor (copyconstructor) ► speciální typ konstruktoru, který inicializuje instanci podle jiné instance stejné třídy komplex(const komplex &src) { // kopírovací konstruktor // volá se vždy při předávání hodnoty typu komplex // zkopíruje reálnou i imaginární část this->Re = new int(*src.Re); this->Im = new int(*src.Im); }

9 Použití kopírovacího konstruktoru ► v definici komplex C(1,2), D(C); ► v přiřazení A = B + C je nutné ke kopírovacímu konstruktoru ještě přetížit operátor + a = operátor + sečte B a C a kopírovacím konstruktorem se vytvoří temporary instance X a dále probíhá přiřazení A = X pomocí přetíženého operátoru =

10 Zadání cvičení ► 1. Pomocí tříd sestavte program pro součet a násobení dvou matic A a B s dynamickou alokací paměti ► naprogramujte také kopírovací konstruktor pro inicializaci instance jinou instancí; trida A, B(A); ► program umístěte do samostatného hlavičkového souboru, nakreslete vývojový diagram ► ► použití nového „cout <<“ místo „printf()“ ► použití new a delete ► bodování: funkce (1 bod), rychlost (1 bod), stabilita a délka prog. (1 bod), implementace v hl. souboru (1 bod)


Stáhnout ppt "Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance."

Podobné prezentace


Reklamy Google