double arrow

Функции-члены


Метод в 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; }









Сейчас читают про: