This is an old revision of the document!


Laboratorul 02: Elemente specifice C++

1. Comentarii "stil" C++

Putem scrie comentarii pe o linie folosind simbolurile

//

Ce este intre 'forward-slash-uri' si sfarsitul liniei se ignora.

// Comentariu C++
 
/* Comentariu C */
 
/*
 * Comentariu Stil Documentatie (Asemanator C)
 */

2. Struct si Union

Structurile si uniunile pot fi referite doar prin nume, deci fara a fi nevoiti sa utilizam cuvintele cheie struct sau union de fiecare data. Asta arata ca struct-urile si union-urile sunt in C++ tipuri de date recunoscute automat.

struct str
{
    // Cod aferent structurii 
};
 
union uni
{
    // Cod aferent union
};
 
str a, b;
uni c, d;
 
void f(str x) {/* cod functie */}

3. Functii Inline

O functie inline e definita in felul urmator:

inline TIP_RETURNAT NUME_FUNCTIE(LISTA_ARGUMENTE) {/* cod functie */}

De ce sunt utile functiile inline? La apelul unei functii inline, in loc de apelarea propriu-zisa a functiei, se substituie codul efectiv al functiei la compilare. Avantajul este in termeni de viteza. Nu se va mai 'cauta' definitia functiei, va fi 'direct' unde trebuie. Dezavantajul este cresterea dimensiunii fisierului binar generat. Asadar, functiile inline reprezinta un trade-off intre viteza si spatiu.

Pentru a rula exemplul de mai jos, click aici.

#include <iostream>
using namespace std;
 
// Declaram functia 'max' drept inline
inline int max(int a, int b)
{
  return (a > b) ? a : b;
}
 
/* Echivalent in C */
#define max(a,b) (((a) > (b)) ? (a) : (b))
 
int main() {
 
  int nr1 = 2, nr2 = 6;
  cout << max(nr1, nr2) << endl;
 
  return 0;
}

4. Supradefinirea functiilor

In C++ este permisa supradefinirea functiilor, adica existenta mai multor functii cu acelasi nume, dar care difera prin tipul si/sau numarul parametrilor. Decizia de a apela o functie sau alta se face dupa tipul sau numarul parametrilor.

Aceasta inseamna ca o functie este recunoscuta nu numai prin numele sau, ci prin “semnatura”, adica nume, tip si lista de parametri.

In exemplul de fata, se considera patru functii cu acelasi nume (cub). Trei dintre ele au un unic parametru (int, float si double), iar a patra are doi parametri. Ultima functie apeleaza functia cub specifica tipului float. Pentru a urmari apelurile, fiecare functie este insotita de un mesaj de identificare la consola.

Pentru a experimenta cu codul de mai jos, click aici.

#include <iostream>
using namespace std;
 
int cub (int n)
{    cout << "Apel functie cub int\n"; return n*n*n; }
 
double cub (double n)
{    cout << "Apel functie cub double\n"; return n*n*n; }
 
float cub (float n) 
{    cout << "Apel functie cub float\n"; return n*n*n; }
 
float cub (float x, float a)
{  cout << "Apel functie cub diferenta\n";
     return cub (x-a);  // Aici se va apela cub cu float  
}
 
int main() {
 
  cout << cub(3) << endl << endl;
 
  double var = 3.33335678976;
  cout << cub(var) << endl << endl;
 
  float var2 = 3.2;
  cout << cub(var2) << endl << endl;
 
  cout << cub(9.9, 3.3) << endl << endl;
 
  return 0;
}
poo-is/laboratoare/02.1599478632.txt.gz · Last modified: 2020/09/07 14:37 by sergiu.craioveanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0