Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Functii C++

c


Functii C++

Functii Inline

Aceste macrouri se pot defini astfel:



# define numem ( Lista_parametri_formali sir_caractere

Apelurile macrourilor se vor inlocui cu sirul de caractere precizat, fara a face verificari de tipuri, ceea ce poate conduce la erori.

Aceste erori pot fi eliminate daca utilizam functiile inline, caz in care se vor face conversiile de tip necesare. Aceste functii se declara prin scrierea cuvantului inline la inceputul antetului, asa cum se pate vedea in exemplele urmatoare:

Ex. 1:

#include <conio.h>; #include <iostream.h>;

#define Abs_G(x) (x)> 0 ? (x) : -(x) // Gresit !

#define Abs_g(x) ( x > 0 ? x : - x ) // gresit !

#define Abs_c(x) ( (x)> 0 ? (x) : -(x) ) // Macro corect

inline long Abs (long x) // Functie Inline

void main (void)

Ex. 2:

#include <iostream.h>;

#define    max x, y) (x>y ? x : y) // Gresit !

inline int Max(int x, int y) // F.Inline

void main (void)

// Rezultatele

max(7,3)=7

Max(6,3)=6

Functii de tip referinta

Antetul unei functii cu valoare de tip referinta este:

tip & numef ( Lista_parametri_formali

Exemplu:

#include <time.h>; #include <stdlib.h>; #include <conio.h>; #include <iostream.h>;

int & Alba_Neagra ( int & Albe, int & Negre ) // Ref. la int

void main (void)

In urmatorul exemplu se doreste modificarea coordonatelor celui mai apropiat punct (dintre P si Q) fata de origine (nu doar coordonatele simetricului lui P sau Q):

Simetrizeaza cel mai apropiat punct fata de origine

#include <iostream.h>

#include 'crt.h'

struct Punct ;

float D2 ( Punct P )

Punct SimO ( Punct& P )

Punct& ApropO( Punct& P, Punct& Q )

Punct CitP ( )

void TipP ( Punct P )

void main (void)

// Ex. Referinta

#include <iostream.h>;    #include 'Crt.Cpp'

void suma (int x,int y,int *z)

void Suma (int x,int y,int &z)

int* max (int& x, int& y)

int& Max (int& x, int& y)

struct Punct ;

Punct Atrib (int x, int y)

Punct sim (Punct P)

Punct& Sim (Punct& P)

Punct* Psim(Punct P)

void Tip (Punct P)

void main (void)

Rezultate:

Dati x,y : 1 5

(x+1)*(y+1) = 12

(x+1)*(y+1) = 12

x,y = 1 5

max(x,y)+1 = 6

x,y = 1 6

Max(x,y)+1 = 7

x,y = 1 7

P(1,7)

P(-1,-7)

P(1,7)

P(-1,-7)

P(-1,-7)

P(x,y)=(1,7)

P(x,y)=(-1,-7)

Supraincarcarea functiilor

Aceasta proprietate da posibilitatea utilizarii unor functii avand acelasi nume, dar diferite (inrudite, cu antete diferite).

Exemple:

#include <math.h>; #include <complex.h>; #include <conio.h>; #include <iostream.h>;

double ArcTg (double x)

double ArcTg (double y, double x)

double ArcTg (complex z)

void main (void)

// Roteste un Triunghi in jurul unui Punct

#include 'graf.h'

#include <conio.h>

struct Punct ;

struct Triunghi ;

Punct Init (float x, float y);

Triunghi Init (Punct A, Punct B, Punct C);

void Translat (Punct& P, Punct Q);

void Translat (Triunghi& T, Punct Q);

void Rot (Punct& P, float Alfa, Punct Q);

void Rot (Triunghi& T, float Alfa, Punct Q);

Punct Init (float x, float y) ; return P; }

Triunghi Init (Punct A, Punct B, Punct C)

void Translat (Punct& P, Punct Q)

void Translat (Triunghi& T, Punct Q)

void Rot (Punct& P,Punct Q,float Alfa)

void Rot (Triunghi& T,Punct Q,float Alfa)

void Muta(Punct P)

void Trag(Punct P)

void Des (Punct P)

void Des (Triunghi T)

void main(void)

while ((Rasp=getche())!=Esc);

closegraph();

Initializarea parametrilor formali

Parametrii formali pot avea o valoare implicita, daca acestia lipsesc din lista parametrilor actuali, valoare data de o expresie. In lista parametrilor formali, cei cu valoare implicita (initializati) se vor scrie ultimii astfel:

tip nume = expresie

Exemplu:

#include <stdio.h>; #include <conio.h>; #include <iostream.h>;

struct Obiect ;

int ELipsa ()

int Este_Punct (Obiect o)

Obiect Init( float x0=0, float y0=0, float raza=ELipsa() )

Tip ( Obiect o )

main ()

In exemplul care urmeaza se poate vedea cum se pot folosi parametrii impliciti pentru a declara punctul O(0,0), un punct A pe axa Ox, un punct P in plan (IR ), un cerc C (in plan), extremitatile unui segment din spatiu (Q,RIR ), precum si segmentele QR si RO:

#include <stdio.h>;

#include <conio.h>;

#include <iostream.h>;

struct Punct ;

Punct Init( float x0=0, float y0=0, float z0=0 )

void Tip ( Punct P )

struct Segment ;

Segment Init ( Punct A, Punct B = Init() )

return AB;

void Tip ( Segment AB )

void main ()

Functii membru pentru Structuri

Acestea se declara in cadrul structurii ca finctii inline sau prototipuri (urmand in acest caz descrierea lor cu ajutorul operatorului de rezolutie (: ).

// Simetrizeaza cel mai apropiat punct fata de origine

#include <iostream.h>

#include 'crt.h'

struct Punct

Punct& SimO ()

};

Punct& Punct::CitP ()

void Punct::TipP ()

Punct& ApropO( Punct& P, Punct& Q )

void main (void)

// Simetrizeaza cel mai apropiat punct fata de origine

#include <iostream.h>

#include 'crt.h'

struct Punct

void TipP()

float D2 ()

Punct& SimO();

};

Punct& Punct::SimO()

Punct& ApropO (Punct& P, Punct& Q)

void main (void)



Document Info


Accesari: 1101
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )