Budowa i struktura programu, przestrzenie nazw


Najprostszy program napisany w C++ ma postać:
1  #include <cstdlib>
2  #include <iostream>
3
4  std::string x;
5  int main(){
6     std::cout<<"Podaj swoje nazwisko"<<std::endl;
7     std::cin>>x;
8     std::cout<<"\n\nTwoje nazwisko to: "<<x<<std::endl;
9     system ("PAUSE");
10    return EXIT_SUCCESS;
11    }

Budowa programu jest następująca:

* Dyrektywy typu #include<...> (linie 1,2) - mówi kompilatorowi jakich bibliotek ma używać.
* Deklaracje zmiennych i funkcji (linia 4).
* Funkcja główna programu o nazwie main typu integer (linia 5-11).
  * blok funkci z instrukcjami jest zawarty pomiędzy nawiasami klamrowymi:
    cout - funkcja wypisywania na ekran
    cin - funkcja wczytywania danych z klawiatury
    endl - funkcja przejścia do nowej linii na ekranie
    \n - znak przejścia do nowej linii (nie jest widoczny na ekranie)
    string x - deklaracja zmiennej o nazwie x typu string (typ tekstowy)

Analizując kod widzimy, że:

1,2 - linie te są dyrektywami dla kompilatora mówiące, że ma korzystać z biblioteki standardowej i z biblioteki obsługującej wejścia i wyjścia.
4 - deklaracja zmiennej tekstowej x.
5 - funkcja główna programu.
6 - wyświetlanie napisów na ekranie i przejście do nowej linii.
7 - wczytywanie zmiennej z klawiatury.
8 - przejście o dwie nowe linie, wyświetlenie napisów na ekranie, wyświetlenie wartości zmiennej x oraz przejście do nowej linii.
9 - uruchomienie polecenia systemowego pause, czekającego na naciśnięcie dowolnego klawisza ( dotyczy tylko Windowsa). Bez tej komendy program się uruchomi i natychmiast zamknie.
10 - zwraca do systemu wartość zero, co oznacza, że program zakończył się poprawnie.
11 - zamknięcie funkcji głównej.

Ponieważ w programie nie zostały określone nazwy funkcji cout, cin i endl oraz typ zmiennej string, to należało pokazać, że są one zdefiniowane w bibliotece standardowej. Zostało to zrobione za pomoca konstrukcjii std::cout, std::cin, std::endl oraz std::string.
W prostych programach, gdzie prawdopodobieństwo użycia tych samych nazw (konflikt nazw) jest bardzo małe, można zamaskować pokazywanie skąd są nazwy, przez użycie polecenia using namespace std. Kod programu jest wtedy bardziej przejrzysty i ma prostszą postać. W rzadkich przypadkach może to spowodować konflikt z innymi nazwami stosowanymi przez twórców innych bibliotek.

1  #include <cstdlib>
2  #include <iostream>
3  using namespace std;
4  string x;
5  int main(){
6     cout<<"Podaj swoje nazwisko"<<endl;
7     cin>>x;
8     cout<<"\n\nTwoje nazwisko to: "<<x<<endl;
9     system ("PAUSE");
10    return EXIT_SUCCESS;
11    }

3 - funkcja pokazująca na przestrzeń nazw biblioteki standardowej.

Możliwy jest też inny sposób definiowania nazw przy użyciu słowa using, jak w poniższym przykładzie.
1  #include <cstdlib>;
2  #include <iostream>;
3  using std::cin;
4  using std::cout;
5  using std::endl;
6  using std::string;
7
8  string x;
9  int main(){
10    cout<<"Podaj swoje nazwisko"<<endl;
11    cin>>x;
12    cout<<"\n\nTwoje nazwisko to: "<<x<<endl;
13    system ("PAUSE");
14    return EXIT_SUCCESS;
15    }

Wystarczy tylko raz zdefiniować nazwy (linie 3,4,5,6), które są potem używane w całym programie.
Można też samemu zdefiniować swoją przestrzeń nazw.
#include <cstdlib>;
#include <iostream>;

using namespace std;
namespace aspercz{
   string haslo="j23";
   }

int main(){
   cout<<"Haslo brzmi "<<aspercz::haslo<<endl;
   system ("PAUSE");
   return EXIT_SUCCESS;
   }

Zostanie wyświetlony napis:
Haslo brzmi j23
do góry