Et scope kan betegnes som det der står mellem {}, altså en blok, kroppen på en funktion eller et namespace, en klasse eller fx. en if statement, fx
funktion hejhej(var et, var to)
{
//her er funktions scopet
if(et == to)
{
//et if scope
}
}
Altså bare det der står imellem {}. Her er der to scopes indeni hinanden. I VB er det nok begin og end som betegner dette.
Jeg håber du forstår følgende eksempel for at se virkning af skyggevariabler
#include <iostream>
using namespace std;
int main()
{
int x = 1;
int y = 4;
if(y == 4)
{
int x = 5;
cout << "if scopes x er " << x << endl;
}
cout << "Main scopes x er " << x << endl;
}
Her har du to scopes. En funktions scope og en if scope, og mindsanten om x'erne ikke holder deres værdier. Med hvad hvis vi har en klasse, som har en public x og en lokal x i en funktion? Kan man godt det?
#include <iostream>
using namespace std;
class test
{
public:
int x;
void func()
{
int x = 1;
cout << "func() variablen er " << x << endl;
}
test()
{
x = 1;
cout << "Klasse variablen er " << x << endl;
}
};
int main()
{
int x = 1;
cout <<"main x er " << x << endl;
cout << "jeg kaldet et object som også har x, men her har den en public x og en lokal x i funktionen test " << endl;
test g;
g.func();
cout << "Mon ikke mains x stadig er 1? Main's x er " << x <<endl;
}
Ja det kan man godt. Fordi, som der også står i jeres bog "Det er vedtaget at det altid er den nærmeste variabel der skal bruges" altså det er altid den variabel der er i den nærmeste scope, der skal bruges. Forstår du det? For der er egentlig ikke mere i det.
Indlæg senest redigeret d. 05.06.2006 18:47 af Bruger #1151