Читайте также:
|
|
В С++ эта возможность является результатом позднего связывания; при этом адреса определяются динамически при выполнении программы, а не статически, во время компиляции — как в обычных транслируемых языках. Статический (фиксированный) процесс часто называют ранним связыванием. Имена функций при этом заменяются адресами памяти. Позднее связывание осуществляется при помощи виртуальных функций, которые определяются в родительском классе, в то время как последующие производные классы перегружают их, переопределяя реализацию конкретной функции. При использовании виртуальных функций сообщения передаются не непосредственно объекту, а в виде указателя, ссылающегося на объект.
Для адресации виртуальные функции используют таблицу. Эта таблица инициализируется на этапе выполнения при помощи конструктора. Конструктор вызывается всякий раз при создании объекта класса. В данном случае задача конструктора — связать виртуальную функцию с таблицей адресов. При компиляции адрес виртуальной функции не известен; вместо него указывается позиция в таблице адресов, которая будет содержать адрес функции.
3. Первый взгляд на классы С++. Структура как простейший класс. Синтаксис и правила для классов С++. Простой класс С++.
Первый взгляд на классы С++.
Тип С++ clаss является расширением типа С struct.
Структура как простейший класс.
Во многом структура в С++ напоминает простейший вид класса. Для ее определения используется ключевое слово struct.
#include <iostream>
using namespace std;
struct math_operations
{
double data_value;
void set_value(double ang) {data_value=ang;};};
Первое, на что следует обратить внимание, это то, что внутри структуры содержатся описания данных и функций-членов. Редко встречаются функции-члены, описанные в структуре. Такие функции могут работать только с данными, содержащимися в этой структуре (или классе).
Класс может иметь данные-члены и функции-члены. По умолчанию при объявлении С++ struct данные и функции-члены имеют тип public (раздел public содержит данные и функции, которые доступны извне структуры).
Для доступа к функциям-членам структуры обычно используется операция "точка" (.). Структуре или классу можно назначить переменные-указатели — тогда используется операция "стрелка" (->).
Синтаксис и правила для классов С++.
Описание класса С++ начинается с ключевого слова class. Затем сразу же следует имя класса (теговый тип).
class тип {
тип переменная1
тип переменная2
public:
функция-член1
функция-член2
} имя, связанное с типом класса;
Переменные-члены следуют непосредственно за объявлением класса. По умолчанию это — частные (private) для класса переменные и доступ к ним возможен только посредством функций-членов, которые находятся дальше.
Функции-члены обычно следуют за объявлением public. Благодаря этому, к ним можно обращаться из внешних для класса процедур. Все функции-члены класса имеют доступ к любым разделам этого класса: public, private и protected.
Простой класс С++.
По умолчанию элементы класса С++ имеют локальную видимость. Это означает, что переменные-члены доступны только функциям-членам этого класса. Если функции-члены должны иметь видимость за пределами класса, то это нужно указать явно.
Дата добавления: 2015-12-08; просмотров: 70 | Нарушение авторских прав