Merhaba,
Dün farkettim ki bir nesnenin üyesi "static" ise, nesne hükmünü yitirdiğinde bile değerini koruyor. Çünkü tıpkı "global variable" gibi program sonlanana kadar son değerini muhafaza ediyormuş. Bunu aşağıda, D dahil, C++ ve Java'da denedim. Özellikle C++'da sınıf dışında ek bir tanımla yapılması bunun bir kanıtı olsa gerek:
Alıntı ("D KODU"):
> import std.conv, core.stdc.stdio: printf;/*
> import std.stdio;//*/
>
> class staticMember {
> public:
> static int i;
> };
>
> //int staticMember.i;
>
> int main(string[] args) {
> staticMember.i = args.length > 1 ? to!int(args[1]) : 9;
>
> for(staticMember test = new staticMember; test.i > 1; test.i--) {
> printf("%d", test.i); // print 98765432
> }
> printf("-new-");
>
> //test.i == 1:
>
> //printf("%d", test.i);/*
> staticMember test = new staticMember;//*/
>
> printf("%d", test.i); // print 1
> printf("-done-\n");
>
> return 0;
> }
> ```
>
Alıntı ("C++ KODU"):
>
>
> #include //*/
#include
class staticMember {
public:
static int i;
};
int staticMember::i;
int main(int argc, char *argv[] ) {
staticMember::i = argc > 1 ? atoi(argv[1]) : 9;
for(staticMember *test = new staticMember; test->i > 1; test->i--) {
std::cout << test-> i; // print 98765432
}
std::cout << "-new-";
//test.i == 1:
//std::cout << test.i;/*
staticMember *test = new staticMember;//*/
std::cout << test->i; // print 1
std::cout << "-done-\n";
return 0;
}
>
Alıntı ("Java KODU"):
>>
>
>
> class staticMember {
> public
> static int i;
> }
>
> class code {
>
> public static void main(String[] args) {
> staticMember.i = args.length > 0 ? Integer.parseInt(args[0]) : 9;
>
> for(staticMember test = new staticMember(); test.i > 1; test.i--) {
> System.out.print(test.i); // print 98765432
> }
> System.out.print("-new-");
>
> //test.i == 1:
>
> //System.out.print(test.i);/*
> staticMember test = new staticMember();//*/
>
> System.out.print(test.i); // print 1
> System.out.print("-done-\n");
> }
>
> }
> ```
>
--
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]