SayIT

Software => Programare => Topic started by: kquizak on 01 November 2006, 23:15

Title: Metoda statica in C++
Post by: kquizak on 01 November 2006, 23:15
va intreb o chestie..sa nu radeti...
in c++ se poate apela metoda direct prin numele clasei,fara ca ea sa fie declarata static?
Title: Meteda statica in C++
Post by: kman on 01 November 2006, 23:53
Quote from: kquizak on 01 November 2006, 23:15
va intreb o chestie..sa nu radeti...
in c++ se poate apela metoda direct prin numele clasei,fara ca ea sa fie declarata static?

NU, ca sa poti apela o metoda dintr-o clasa fara sa ai clasa instantiata, metoda trebuie sa fie statica altfel o sa-ti crape la compilare.

Ca sa-ti ilustrez:

Code (cpp) Select
#include <iostream>

using namespace std;

class a {
public:
        void cd() { cout << "eject" << endl; } ;
};

int main() {
        a *b = new a();
        b->cd();
        a::cd();
}


kman@dracula:~$ g++ a.cpp
a.cpp: In function 'int main()':
a.cpp:13: error: cannot call member function 'void a::cd()' without object


Acelasi cod, doar ca metoda e statica:

Code (cpp) Select
#include <iostream>

using namespace std;

class a {
public:
        static void cd() { cout << "eject" << endl; } ;
};

int main() {
        a *b = new a();
        b->cd();
        a::cd();
}


kman@dracula:~$ g++ a.cpp
kman@dracula:~$ ./a.out
eject
eject