// external.cpp -- vnější (externí) proměnné
#include <iostream>
using namespace std;
// vnější proměnná
double otepleni = 0.3;

// funkční prototypy
void update(double dt);
void local();

int main() 				// používá globální proměnnou
{
	cout << "Globalni promenna otepleni je " << otepleni << " stupnu.\n";
	update(0.1); 		// vyvolání funkce na změnu proměnné otepleni
	cout << "Globalni promenna otepleni je " << otepleni << " stupnu.\n";
	local(); 				// vyvolání funkce na lokální proměnnou otepleni
	cout << "Globalni promenna otepleni je " << otepleni << " stupnu.\n";
	
	return 0;
}

void update(double dt) 		// modifikuje globální proměnnou
{
	extern double otepleni; // volitelná opětná deklarace
	otepleni += dt;
	cout << "Zmena globalni promenne otepleni na " << otepleni;
	cout << " stupnu.\n";
}

void local() // používá lokální proměnnou
{
	double otepleni = 0.8; // nová proměnná skrývá vnější proměnnou

	cout << "Lokalni promenna otepleni = " << otepleni << " stupnu.\n";
			// Přístup ke globální proměnné pomocí
			// operátoru na rozlišení platnosti
	cout << "Ale globalni promenna otepleni = " << ::otepleni;
	cout << " stupnu.\n";
}
