1 / 6

Funktionsmall

Funktionsmall. template <class Type> void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras och // användas inom funktionen }. Type döljer ev. Type deklarerat före mallen. Implicit instansiering, Type byts mot aktuell typ. Klassmall.

bill
Download Presentation

Funktionsmall

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Funktionsmall template <class Type> void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras och // användas inom funktionen } Type döljer ev. Type deklarerat före mallen Implicit instansiering, Type byts mot aktuell typ CD5250 OOP med C++ Mats Medin MDH/IDT

  2. Klassmall template <class Type> class Stack { Stack(); ~Stack(); void push(const Type item); void pop(Type &item); } instansiering görs explicit enligt: Stack<int> my_stack; Type byts mot aktuell typ CD5250 OOP med C++ Mats Medin MDH/IDT

  3. Template nontype parameter+defaults konstant uttryck, beräknas vid kompilering template <class Type=string, int size=1024> class Stack { public: Stack(); ~Stack(); void push(const Type item); void pop(Type &item); private: Type theStack[size]; } Defaultvärde från flera deklarationer kan användas CD5250 OOP med C++ Mats Medin MDH/IDT

  4. Klassmall forts Medlemsfunktioner definierade i .cpp-filen måste också göras som mallar: template <class Type> Stack<Type>::push const Type item) // OBS! { // kod } Type byts mot aktuell typ CD5250 OOP med C++ Mats Medin MDH/IDT

  5. friends (vänner) i klassmallar Följande kan vara “vänner till klassmallar”: • klass eller funktion som inte är mall • Klass eller funktion som är mall, bunden till klassmallen genom att den använder klassmallens typparameter • Klass eller funktion som är mall, obunden, dvs med egen typparameter oberoende av klassmallens CD5250 OOP med C++ Mats Medin MDH/IDT

  6. Om klassvariabler definieras i en klassmall får varje instansiering sin egen uppsättning. • Klasser inuti klasser kan göras även med mall. Den inre klassen kan använda den yttre klassens mall-parametrar. • Medlemsfunktioner och nästade klasser i en klassmall kan ha egna typparametrar oberoende av klassmallens, ”member template” detta används i abstrakta containertyper CD5250 OOP med C++ Mats Medin MDH/IDT

More Related