SayIT
Software => Programare => Topic started 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?
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:
#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:
#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