Министерство высшего и среднего специального образования республики узбекистана


Download 164.64 Kb.
bet1/5
Sana25.02.2023
Hajmi164.64 Kb.
#1231224
  1   2   3   4   5
Bog'liq
ООП


МИНИСТЕРСТВО ВЫСШЕГО И СРЕДНЕГО СПЕЦИАЛЬНОГО ОБРАЗОВАНИЯ РЕСПУБЛИКИ УЗБЕКИСТАНА
БУХАРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Группы: 1-2ПМИ-19.




САМОСТОЯТЕЛЬНЫХ РАБОТ ПО ДИСЦИПЛИНЕ
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ”


Студенты: __________ Ярашев Н.
Преподаватель: __________ Атаева Г.


Тема: Статические элементы класса. Статические функции-элементы. Константные объекты и константные функции-элементы. Операции класса new и delete.
План:

  1. Статические элементы класса

  2. Структуры

  3. Константные объекты и константные функции-элементы

  4. Операции класса new и delete

Кроме переменных и методов, которые относятся непосредственно к объекту, C++ позволяет определять переменные и методы, которые относятся непосредственно к классу или иначе говоя статические члены класса. Статические переменные и методы относят в целом ко всему классу. Для их определения используется ключевое слово static.


Например, в банке может быть множество различных вкладов, однако все вклады будут иметь какие-то общие процентные ставки. Так, для описания банковского счета определим и используем следующий класс:
#include
class Account
{
public:
Account(double sum)
{
this->sum = sum;
}
static int getRate()
{
return rate;
}
static void setRate(int r)
{
rate = r;
}
double getIncome()
{
return sum + sum * rate / 100;
}
private:
double sum;
static int rate;
};
int Account::rate = 8;
int main()
{
Account account1(20000);
Account account2(50000);
Account::setRate(5); // переустанавливаем значение rate
std::cout << "Rate: " << Account::getRate() << std::endl;
std::cout << "Rate: " << account1.getRate() << " Income: " << account1.getIncome() << std::endl;
std::cout << "Rate: " << account2.getRate() << " Income: " << account2.getIncome() << std::endl;
return 0;
}
В классе Account определена одна статическая переменная rate и две статических функции для управления этой переменной. При определении статических функций стоит учитывать, что внутри них мы можем использовать только статические переменные класса, как например, переменную rate. Нестатические переменные использовать в статических функциях нельзя.
Кроме того, в статических функциях нельзя использовать указатель this, что в принципе и так очевидно, так как this указывает на текущий объект, а статические функции относятся вцелом ко всему классу.
Также важно, что если класс содержит статические переменные, то они должны быть дополнительно определены вне класса:
int Account::rate = 8;
Присваивать начальное значение переменной необязательно.
Также стоит отметить, что так как статические члены относятся в целом ко всему классу, то для обращения к статическим членам используется имя класса, после которого идет оператор ::. Либо мы можем также обращаться к публичным членам класса через переменные данного класса:
Account::getRate()
account1.getRate()
Консольный вывод программы:
Rate: 5
Rate: 5 Income: 21000
Rate: 5 Income: 52500
Также нередко в классах используют статические константы. Например, сделаем в классе Account переменную rate константой:
#include
class Account
{
public:
const static int rate = 8;
Account(double sum)
{
this->sum = sum;
}
double getIncome()
{
return sum + sum * rate / 100;
}
private:
double sum;
};
int main()
{
Account account1(20000);
Account account2(50000);
std::cout << "Rate: " << account1.rate << "\tIncome: " << account1.getIncome() << std::endl;
std::cout << "Rate: " << account2.rate << "\tIncome: " << account2.getIncome() << std::endl;
return 0;
}
В отличие от статических переменных статические константы не нужно дополнительно определять вне класса.

Download 164.64 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling