Пример класса с методами
Между внешней (объявленной вне класса) функцией и методом класса существует принципиальное отличие. Заключается оно в том, что
метод - это составная часть класса и для его вызова необходимо сначала создать соответствующий объект (исключение составляют статические методы, о которых речь будет идти позже). Кроме того, результат выполнения метода может (и, как правило, так и есть) зависеть от того, из какого объекта он вызывается.
Метод summa() объявлен как такой, что имеет тип int, поэтому в качестве результата методом возвращается целочисленное значение. Как определяется возвращаемое методом значение, видно из его кода. В частности, вводится локальная целочисленная переменная к, значение которой определяется командой k=n+m и возвращается в качестве результата (команда return k). Стоит обратить внимание на два обстоятельства. Во-первых, методу «известны» ноля объекта n и m, поэтому нет необходимости их описывать в методе еще раз (достаточно инструкции-описания полей). Во-вторых, аргументов у метода нет (но пустые круглые скобки все равно указываются, причем их надо будет указывать впоследствии и при вызове метода!). Кроме того, весь код можно было упростить, сведя к инструкции return n+m - переменная k введена для наглядности. Метод show() не возвращает результат, поэтому в качестве его типа указано ключевое слово void. Как и в предыдущем случае, у метода нет аргументов, а его назначение состоит в отображении значений полей n и m объекта, из которого этот метод вызывается. Наконец, void-метод mult() предназначен для умножения полей объекта, из которого вызывается метод, на число, которое указано аргументом метода. Изменение полей объекта реализуется с помощью команд n*=k и m*=k. Здесь к - целочисленный аргумент метода mult() (не следует путать этот аргумент с одноименной локальной переменной, объявленной в методе summa().
Метод summa() объявлен как такой, что имеет тип int, поэтому в качестве результата методом возвращается целочисленное значение. Как определяется возвращаемое методом значение, видно из его кода. В частности, вводится локальная целочисленная переменная к, значение которой определяется командой k=n+m и возвращается в качестве результата (команда return k). Стоит обратить внимание на два обстоятельства. Во-первых, методу «известны» ноля объекта n и m, поэтому нет необходимости их описывать в методе еще раз (достаточно инструкции-описания полей). Во-вторых, аргументов у метода нет (но пустые круглые скобки все равно указываются, причем их надо будет указывать впоследствии и при вызове метода!). Кроме того, весь код можно было упростить, сведя к инструкции return n+m - переменная k введена для наглядности. Метод show() не возвращает результат, поэтому в качестве его типа указано ключевое слово void. Как и в предыдущем случае, у метода нет аргументов, а его назначение состоит в отображении значений полей n и m объекта, из которого этот метод вызывается. Наконец, void-метод mult() предназначен для умножения полей объекта, из которого вызывается метод, на число, которое указано аргументом метода. Изменение полей объекта реализуется с помощью команд n*=k и m*=k. Здесь к - целочисленный аргумент метода mult() (не следует путать этот аргумент с одноименной локальной переменной, объявленной в методе summa().
#includeusing namespace std; //Объявление класса SimpleClass: class SimpleClass{ public: //Целочисленные поля класса: int m; int n; //Метод для вычисления суммы полей: int summa(){ int k=n+m; return k; } //Метод для отображения значений полей: void show(){ cout << "m = " << m << endl; cout << "n = " << n << endl; } //Метод для умножения полей на число: void mult(int k){ n*=k; m*=k; } }; int main(){ //Создание объектов MyObj1 и MyObj2 класса SimpleClass: SimpleClass MyObj1,MyObj2; //Полям объектов присваиваются значения: MyObj1.m=1; MyObj1.n=2; MyObj2.m=8; MyObj2.n=9; //Сумма полей для разных объектов: cout << "Total value for MyObj1 is " << MyObj1.summa() << endl; cout << "Total value for MyObj2 is " << MyObj2.summa() << endl; //Умножение полей объектов на число: MyObj1.mult(3); MyObj2.mult(2); //Отображение значений полей объектов: MyObj1.show(); MyObj2.show(); return 0; }