Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / LECS6.DOC
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
56.83 Кб
Скачать

Некоторые особенности компоновки.

Имя, объявленное в области видимости файла, как static, является локальным и скрыто от других файлов. Так же ведут себя функции, объявленные inline и переменные с модификатором const. Переменные const, находящиеся в области видимости файла, но не являющиеся статической, может быть задан внешний тип компоновки с помощью объявления ее extern.

Программы на Си++ могут компоноваться с программами на Си на Паскале, в зависимости от реализации.

Пространство имен.

Си++ унаследовал от Си единое пространство имен. Возникающие из-за этого конфликты привели к появлению в Си++ области видимости пространства имен.

Namespace LMPinc

{

class purrles{…};

class toys{…};

. . . .

}

Идентификатор пространства имен может быть использован, как часть идентификатора, разрешающего область видимости. Идентификатор_пространства_имен :: идентификатор

Существуют также объявление using, которое позволяет получить доступ ко всем именам из пространства имен.

using namespace LMPinc;

toys top; //используется LMPinc :: toys

Пространства имен могут быть вложенными.

namespase LMPout

{

int n;

namespace LMPin

{

int sq()

{

return n*n;

} //LMPout :: n

void pr_mu_logo():

}

void LMPin :: pr_mu_logo()

{

cout<<”LMPinc”<<eldl;

}

}

Вместо глобальных статических переменных может использоваться безымянное пространство имен. Например,

Namespace

{

int count=0;

} //здесь count уникальный.

// count доступна в остальной части файла

void chg_cnt(int i)

{

count=i;

}

Перечислимые типы.

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

enum suit {clubs, diamonds, hearts, spides};

0 1 2 3

по умолчанию

Перечислимые константы могут быть инициализированы произвольными целыми константами, а также целыми выражениями

enum ages {laura=7, ira=8, harold=59, philip=harold+7};

66

Теговые имена и имена перечислимых констант должны быть уникальны в пределах области видимости.

Перечислимые константы могут быть преобразованы к обычному целому типу, но не наоборот.

enum signal {off,on}a=on; //a присвоено значение on=1

enum answer {no, yes, maybe=-1}b;

enum negative {no, false}c; //недопустимо no и false переобъяв- лены

int i, j=on; //допустимо

a=off; //допустимо

i=a; //допустимо

b=a; // недопустимо, разные типы

b=static_cast<answer>(a); //допустимо

b=(a? No : yes);

Типы указателей.

Указатели в Си++ используются для связи переменных с «машинными» адресами.

Если v – переменная, то &v – это адрес, или место в памяти, где хранится ее значение.

Пример объявления указателя на целое

Int*p;

Допустимая область значений:

  • специальный адрес 0 (обычно для указания ошибки)

  • положительные целые числа, которые интерпретируются как машинные адреса в зависимости от конкретной системы.

Примеры присваивания значений.

p=&i; // адрес объекта i

p=0; // нулевое значение

p=static_cast<int*> (1507); // абсолютный адрес

/* об'явление, инициализация и разыменовывание указателя */

#include <stdio.h>

char c; /* Символьная переменная */

main()

{

char *pc; /* Указатель на символьную переменную */

pc = &c;

for (c = 'A'; c <= 'Z'; c++)

printf("%c", *pc);

return 0;

}

Соседние файлы в папке Лекции