Поделиться через


Общие сведения о функциях-членах

Функции-члены являются либо статическими, либо нестатическими. Поведение статических функций-членов отличается от других функций-членов, так как статические функции-члены не имеют неявного this аргумента. Нестатические функции-члены имеют this указатель. Функции-члены, статические или нестатические, можно определить в объявлении класса или вне его.

Если функция-член определяется в объявлении класса, она обрабатывается как встраиваемая функция, и нет необходимости уточнять имя функции именем класса. Хотя функции, определенные внутри объявлений классов, уже рассматриваются как встроенные функции, можно использовать inline ключевое слово для документа кода.

Ниже приводится пример объявления функции в объявлении класса.

// overview_of_member_functions1.cpp
class Account
{
public:
    // Declare the member function Deposit within the declaration
    //  of class Account.
    double Deposit( double HowMuch )
    {
        balance += HowMuch;
        return balance;
    }
private:
    double balance;
};

int main()
{
}

Если определение функции-члена выходит за рамки объявления класса, оно рассматривается как встроенная функция, только если она явно объявлена как inline. Кроме того, имя функции в определении должно уточняться именем класса с помощью оператора разрешения области действия (::).

Следующий пример идентичен предыдущему объявлению класса Account за исключением того, что функция Deposit определяется вне объявления класса.

// overview_of_member_functions2.cpp
class Account
{
public:
    // Declare the member function Deposit but do not define it.
    double Deposit( double HowMuch );
private:
    double balance;
};

inline double Account::Deposit( double HowMuch )
{
    balance += HowMuch;
    return balance;
}

int main()
{
}

Примечание.

Хотя функции-члены можно определить внутри объявления класса или вне его, функции-члены нельзя добавить в класс после определения класса.

Классы, содержащие функции-члены, могут иметь несколько объявлений, но сами функции-члены должны иметь только одно определение в программе. При наличии нескольких определений выдается сообщение об ошибке во время компоновки. Если класс содержит определения встраиваемых функций, определения функций должны быть идентичными для соблюдения данного правила одного определения.