Читайте также:
|
|
Функции-члены класса обычно описываются в программе непосредственно после объявления класса и перед функцией main(). Функции, не относящиеся к классам, по-прежнему описываются после функции main() и имеют прототипы обычного вида.
4. Классы С++. Дополнительные особенности классов. Простой класс. Вложенные классы. Вложенные структуры внутри класса. Альтернативный вариант вложенных описаний.
Тип C++ class обладает достоинствами структур и возможностью ограниченного доступа к определенным данным при помощи функций, также являющихся членами класса. Расширенные возможности классов включают в себя возможность инициализировать и защищать жизненно важные функции и данные.
Концепция классов C++ позволяет сделать шаг к абстрактным типам данных. Класс реализует тип данных-членов и увязывает с данными функциями-членами; с их помощью стало возможным использование концепции хранения структурированных данных вместе с функциями, которые оперируют с переменными-членами.
Описание класса начинается с ключевого слова class, за которым следует имя класса (тег). Обычно функции-члены объявляются как public. Объявление private делает переменные-члены видимыми только для функций-членов данного класса. Часто это явление называется сокрытием данных (data hiding). Объявление public обеспечивает доступность функций-членов за пределами класса:
class car {
int mileage;
int tire_pressure;
float speed;
public:
int maintenace(int);
int wear_record(int);
int air_resistance(float);
} mycar;
При использовании вложенных классов нужно следить за тем, чтобы получившееся объявление не было бы слишком сложным.
#include <iostream>
#include <string.h>
using namespace std;
class employee
{
struct emp_name
{
char firstname[20];
char middlename[20];
char lastname[20];
} name;
struct emp_hours
{
double hours;
double base_sal;
double overtime_sal;
} hours;
public:
void emp_input(void);
void emp_output(void);
}; Видимость вложенных классов такая же, какой бы она была, если бы эти классы были описаны за пределами класса employee.
Возможно использование следующего синтаксиса для вложенных описаний:
class cars {
int mileage;
public:
void trip(int t);
int speed(float s);
};
class contents {
int count;
public:
cars mileage;
void rating(void);
}
Здесь класс cars является вложенным внутри класса contents. Вложенные классы — будь они внутри или снаружи описания — имеют одинаковую область видимости.
Конструкторы и деструкторы. Список инициализации элементов. Конструкторы по умолчанию и конструкторы копирования. Создание простых конструкторов и деструкторов. Использование конструкторов для инициализации переменных-членов класса. Использование конструкторов и деструкторов для выделения и освобождения свободной памяти.
Конструктор — это метод класса.Конструкторы используются для инициализации переменных класса или для выделения памяти. Они всегда имеют такое же имя, как и класс, в котором они определены. Конструкторы располагают дополнительными возможностями: они могут иметь аргументы и их можно перегружать. Конструктор выполняется автоматически при создании объекта типа class. Объекты свободной памяти — это такие объекты, которые генерирует операция new, они служат для выделения памяти создаваемым объектам. Если конструкторы не определены явно, то они генерируются компилятором Microsoft Visual C/C++.
Деструктор — это метод класса, использующийся обычно для освобождения памяти, выделенной из пула свободной памяти. Деструктор — также как и конструктор — имеет такое же имя, как и класс, в котором он описан; ему предшествует символ "тильда" (~). Деструкторы являются дополнениями конструкторов. Деструктор вызывается автоматически при использовании операции delete по отношению к указателю класса или в случае, когда программа выходит из области действия объекта класса. Деструкторы, в отличие от конструкторов, не могут иметь параметров и их нельзя перегружать. Они также создаются компилятором Microsoft Visual C/C++, если не определены явно.
#include <iostream>
using namespace std;
class coins
{
int number;
public:
coins() {cout << "Begin Conversion!\n";}
~coins() {cout << "\nFinished Conversion!\n";}
void get_cents(int);
int quarter_conversion(void);
};
Когда методы класса включены в функции, такое описание называется явным. Методы можно определять обычным образом (то есть после определения класса и перед функцией main
Дата добавления: 2015-12-08; просмотров: 75 | Нарушение авторских прав