Статичні члени класу
Автор: Руслан Михайлишин • Февраль 11, 2024 • Лекция • 838 Слов (4 Страниц) • 84 Просмотры
Лек2
Статичні члени класу
Хоча кожен об'єкт класу має однаковий набір полів і методів, значення полів у кожного об'єкта свої, а результат виклику методів у загальному випадку залежить від того, з якого об'єкта метод викликається. Насправді це не завжди так. Існують особливі члени класу, які називають статичні. Статичний член є загальним всім об'єктів цього класу.
Необхідність у таких статичних членах продиктована рядом практичних міркувань, і їх використання у багатьох випадках виправдане. Наприклад, у програмі потрібно контролювати кількість створених на даний момент об'єктів певного класу. У цьому випадку створюється статичний член класу, значення якого визначається кількістю об'єктів у роботі. На відміну від звичайного поля класу, статичне поле не зникає під час видалення об'єкта. У певному сенсі статичні не завжди так. Існують особливі члени класу, які називають статичні.
У певному сенсі статичні змінні нагадують глобальні змінні програми. Проте статичні змінні, на відміну глобальних змінних, повністю згоджуються з принципами об'єктно-орієнтованого програмування, і зокрема з принципом інкапсуляції.
Статичні члени оголошуються, як і звичайні, але перед статичним членом вказується ключове слово static. Розглянемо спочатку випадок статичного поля
Приклади
Статичні поля
Перевантаження функцій
Після класів, ймовірно, наступною важливою та незвичайною можливістю C++ є навантаження функцій (function overloading). Перевантаження функцій не тільки забезпечує механізм, за допомогою якого C++ досягається один з типів поліморфізму, вона також формує те ядро, в якого розвивається все середовище програмування на C + +
У C++ дві або більше функції можуть мати те саме ім'я, відрізняючись
або типом, або числом своїх аргументів, або тим і іншим. Якщо дві або більше функцій мають однакове ім’я, то говорять, що вони перевантажені.
Приклад 3
Приклад
Статичні поля
#include<iostream> using namespace std; class SimpleClass{ public:
//Статичне поле: static int m;
//Нестатичне поле: int n;
void show();
} obj1, obj2;
//Повторне оголошення змінної: int SimpleClass::m;
int main(){
SimpleClass::m=10;
obj1.n=1;
obj2.n=2;
obj1.show();
obj2.show();
obj1.m=100;
obj2.show();
return 0;}
//Опис методу:
void SimpleClass::show(){
cout<<"Static field m = "<<m<<endl; cout<<"Nonstatic field n = "<<n<<endl;} Результати
Static field m = 10;
Nonstatic field n = 1
Static field m = 10;
Nonstatic field n = 2
Static field m = 100;
Nonstatic field n = 2
Приклад 2
Статичні методи
#include<iostream>
using namespace std;
class SimpleClass{
public:
//Статичне поле:
static int m;
//Нестатичне поле:
int n;
void show();
//Статичний метод:
static void msum (int k);
} obj1, obj2;
//Повторне оголошення змінної:
int SimpleClass::m;
int main(){
//Виклик статичного методу:
SimpleClass::msum(10);
obj1.n=1;
obj2.n=2;
obj1.show();
obj2.show();
//Виклик статичного методу:
obj1.msum(90);
obj2.show();
return 0;}
//Опис нестатичного методу:
void SimpleClass::show(){
...