Метод в C++, J++ принято называть функцией-членом класса, о пересылке сообщений говорят как о вызове функции-члена класса.
- Функции-члены - это, функции которые манипулируют данными-членами класса.
- Функции-члены имеют доступ ко всем полям своего класса.
- Функции-члены могут быть в закрытой, защищенной и открытой части класса.
- Функции-члены могут быть определены внутри или вне (С++) объявления класса. Функции-члены, определенные вне класса, могут быть сделаны inline.
- Функции-члены могут обращаться к полям или функциям-членам, объявленным после них.
- Функции-члены имеют неявно объявленную переменную this.
- Функции-члены могут быть static. Такие функции могут непосредственно обращаться и изменять статические поля класса. Статические Функции-члены класса не могут быть объявлены const или virtual. К таким функциям можно обращаться через имя класса, а не через имя конкретного экземпляра объекта.
Class Shape {
static int num;
Point center;
public:
Shape(Point c): center(c) { ++num; }
~Shape() { --num; }
static int Num() { return num; }
};
int Shape::num=0;
void main()
{
cout << Shape::Num(); // 0
Shape s;
cout << Shape::Num(); // 1
for(int n=Shape::Num(); n>0; n--) { }
} - Функции-члены могут быть объявлены как const, что не позволяет им изменять значение и возвращать неконстантную ссылку или указатель на любое поле класса. Такие Функции-члены не могут быть статическими.
сlass Int { int *v, size, top; public: int Pop(); int Top() const; // Не может изменять что-либо }; void f(const int &s) { int a =s.Top(); // Правильно: Top() константный член int b=s.Pop(); // Ошибка: s не может быть модифицирован } | class A { int a; public: A(){a=10; } Int & get() const; // Ошибка возвращает ссылку }; int & A::get() const { return a; } int main(int argc, char* argv[]){ A b; cout<< " " << b.get(); return 0; } |