Funkcje w C++
14 July 2008
Comments
Funkcje to opisy czynności do wykonania. Z definiowaniem prostych funkcji mieliśmy już do czynienia we wcześniejszych przykładach. Funkcję możemy zdefiniować i/lub zdeklarować. Definicja funkcji - cały kod funkcji:
void funkcja (int parametr)
{
// kod
}
void funkcja (int parametr);
void funkcja (int);
W powyższych przykładach deklaracja zaczyna się od wyrazu "void" - fraza ta (i inne) umieszczona przed nazwą funkcji określa typ wartości zwracanej i może to być np. int, char, double, int*, void - który da funkcję bezrezultatową. Po wpisaniu nazwy podajemy parametry, np.:
(int parametr, char zmienna, int* costam, int buc = 3)
Ostatni parametr - buc ma ustawioną domyślną wartość - jeżeli w wywołaniu funkcji nie zostanie podana inna wartość to zostanie użyta wartość domyślna. Funkcja może też nie mieć parametrów - () - drobne zalecenie, warto wpisać wtedy do nawiasów void.Funkcja musi/może zwrócić rezultat za pomocą wyrażenia return. Dla funkcji typu void wyrażenie return nie może zwracać niczego (poza wywołaniem funkcji typu void).
Niewłaściwy typ funkcji
#include<iostream>
using namespace std;
double foo()
{
double bar = 4.5;
return bar;
}
int foo2()
{
double bar = 4.5;
return bar;
}
int main()
{
double z;
z = foo();
cout << z << endl;
z = foo2();
cout << z << endl;
}
piotr@localhost ~/fl $ g++ a.cpp -o a a.cpp: In function `int foo2()': a.cpp:12: warning: converting to `int' from `double' piotr@localhost ~/fl $ ./a 4.5 4
Wartość domyślna
#include<iostream>
using namespace std;
double foo(int k = 3)
{
k = k*2;
return k;
}
int main()
{
double z;
z = foo();
cout << z << endl;
z = foo(1);
cout << z << endl;
}
Funkcje rozwijane to takie, których po kompilacji... nie ma :) Każde wywołanie funkcji rozwijanej jest zastępowane jej kodem.
#include<iostream>
using namespace std;
inline double foo(int k = 3)
{
k = k*2;
return k;
}
int main()
{
double z;
z = foo();
cout << z << endl;
z = foo(1);
cout << z << endl;
}
RkBlog
Comment article