The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

2.4 Приложение

2.4 Приложение

Предыдущая  Содержание  Следующая V*D*V

Хотя строки ещё не реализованы, всё же мы готовы написать простую тестовую программу. String.h определяет абстрактный тип данных:

 

extern const void * String;

 

Все наши методы являются общими для всех объектов; поэтому добавим их декларации в файл заголовка управления памятью new.h представленного в разделе 1.4:

 

void * clone (const void * self);

int differ (const void * self, const void * b);

 

size_t sizeOf (const void * self);

 

Первые два прототипа декларируют селекторы. Они получены от соответствующих компонентов struct Class простым удалением одной косвенной адресации из декларации. Вот это приложение:

 

#include "String.h"

#include "new.h"

 

int main () {

    void * a = new(String, "a"), * aa = clone(a);

    void * b = new(String, "b");

 

    printf("sizeOf(a) == %u\n", sizeOf(a));

    if (differ(a, b))

        puts("ok");

 

    if (differ(a, aa))

        puts("differ?");

 

    if (a == aa)

        puts("clone?");

 

    delete(a), delete(aa), delete(b);

    return 0;

}

 

Мы создаём две строки и делаем копию одной из них. Показываем размер объекта String — не размер текста контролируемого объектом — и проверяем, что два разных текста приводят к разным строкам. Наконец, проверяем, что копия равна, но не идентична оригиналу, и снова удаляем строки. Если всё хорошо, программа будет печатать что-то вроде

 

sizeOf(a) == 8

ok

 

Предыдущая  Содержание  Следующая