• No results found

Tentamen i 2D1387 Programsystemkonstruktion med C++

N/A
N/A
Protected

Academic year: 2021

Share "Tentamen i 2D1387 Programsystemkonstruktion med C++"

Copied!
2
0
0

Loading.... (view fulltext now)

Full text

(1)

Tentamen i 2D1387 Programsystemkonstruktion med C++

Datum: Torsdag 15 januari, 14-19 Hjälpmedel: Valfri lärobok i C++

Tid: 5 timmar

Skriv tydligt och ge motiveringar till dina svar. För godkänt krävs högst 25 po- äng. Maximal poäng är 45.

1. Betrakta programkoden nedan.

a) Vilka medlemsfunktioner ges implicit av kompilatorn om du inte skriver

dem själv? 2p

b) Ange för varje rad i programmet vilka av funktionerna från uppgift a som

anropas i klassen A. 8p

int main() {

class A {};

A *ap = new A;

A *aa = new A[3];

A a = *ap;

a = *aa;

delete ap;

delete [] aa;

return 0;

}

2. Funktionen apply applicerar (anropar) en funktion f på varje element i en sekvens av element.

a) Skriv en generell implementation av apply. 8p b) Ge två exempel på hur du anropar apply. Låt sekvenserna vara en in- byggd array och en STL-behållare. Låt f vara en vanlig funktion och ett

funktionsobjekt. 4p

1

(2)

3. Programkoden nedan innehåller fel och kan inte kompileras. Vilka är felen

och hur kan de åtgärdas? 12p

struct A {

virtual static void foo() {}

static int bar() { return 0; } static const int i = bar();

static int j = 8;

int k = bar();

int m;

int n;

B b;

class B {

B() : A(), m(bar()), n(A::n) {}

int n;

};

};

4. C är det programspråk som ligger till grunden för C++. I C använde man preprocessorn flitigt, något man försöker undvika i C++ så långt det går.

a) Preprocessorn kan användas till att skapa konstanter, t.ex. #define SIZE 10.

I C++ rekommenderas man använda const för att skapa en konstant. Vad

är fördelarna med const över #define? 3p

b) Preprocessorn kan även användas för att skapa makron, som påminner en del om funktioner. Exempel: #define MAX(a, b) ((a) > (b) ? (a) : (b)).

I C++ har man infört mallar, och dessa kan i kombination med inline med fördel användas istället för makron. Vad är fördelarna med mallar

över makron? 6p

c) Finns det några nackdelar med att använda mallar istället för makron? 2p

2

References

Related documents

• Skriv metoden bool move_event(const Date & from, const Date & to, std::string event) som kan flytta händelser i kalendern genom att först plocka ut och sedan lägga

på åtgärd där så är möjligt. För att minska kompileringstiderna och underlätta underhåll vill man undvika beroenden mellan klasser. Vi vill utöka klassen B genom att

När använder man dem som argumenttyp? När bör en funktion vara const? Hänvisa till uppgift a med motivering där så är lämpligt. 6p c) Vilken är anledningen till att man gör

BigNum används när man vill ha en kopia för sidoeffekternas skull (ovanligt) eller när datatypen är så liten att referen- sanrop ger onödigt arbete. const BigNum är faktiskt

b) Varför kan inte definitioner ligga i headerfilen? 3p c) inline och template är undantag från regeln i deluppgift b). Varför måste. dessa ligga i

b) Vilka effekter uppnås genom att göra konstruktor, destruktor, kopierings- konstruktor, tilldelningsoperator samt operatorerna new och delete till protected

Du vill skapa en trådklass Thread med följande egenskaper: Thread ska när tråden räknat klart frigöra sig själv och får därför inte allokeras på stacken. Trådens arbete ska

Skriv tydligt och ge motiveringar till dina svar. För godkänt krävs 25 poäng, för betyg fyra krävs 34 poäng, för betyg fem krävs 40 poäng. Alla betygsgränser är