R.13.1 Сопоставление описаний
R.13.1 Сопоставление описаний
Два описания функций с одинаковыми именами относятся к одной и той же функции, если они находятся в одной области видимости и имеют идентичные типы параметров (§R.13). Функция-член производного класса относится к иной области видимости, чем функция-член базового класса с тем же именем. Рассмотрим пример:
class B {
public:
int f(int);
};
class D: public B {
public:
int f(char*);
};
Здесь D::f(char*) скорее скрывает B::f(int), чем перегружает эту функцию.
void h(D* pd)
{
pd-›f(1); // ошибка: D::f(char*) скрывает B::f(int)
pd-›B::f(1); // нормально
pd-›f("Ben"); // нормально, вызов D::f
}
Функция, описанная локально, находится в иной области видимости, чем функция с файловой областью видимости.
int f(char*);
void g()
{
extern f(int);
f("asdf"); // ошибка: f(int) скрывает f(char*) поэтому
// в текущей области видимости нет f(char*)
}
Для разных вариантов перегруженной функции-члена можно задать разные правила доступа, например:
class buffer {
private:
char* p;
int size;
protected:
buffer(int s, char* store) { size = s; p = store; }
//…
public:
buffer(int s) { p = new char[size = s]; }
};
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Сопоставление с UNIX и библиотекой С
Сопоставление с UNIX и библиотекой С По ходу изложения материала мы сопоставляем стилевые и функциональные особенности средств Windows и аналогичных им средств, входящих в UNIX (Linux) и стандартную библиотеку ANSI С. Как уже отмечалось, в приложении Б приведены таблицы, содержащие
Глава 23 Сопоставление строк
Глава 23 Сопоставление строк Осуществлять сравнение строк можно не только с помощью функции strcmp() или даже strncmp(). Linux предлагает несколько общих функций сопоставления строк, использование которых позволяет упростить решение задач программирования. Мы рассмотрим сначала
3.2. Сопоставление образцов
3.2. Сопоставление образцов При замене одного фрейма другим не имеет смысла начинать весь процесс согласования заново. Но каким образом можно сохранить то, что было уже ранее установлено? Будем рассматривать лишь тот случай, когда при отсутствии специальных знаний
R.13.2 Сопоставление параметров
R.13.2 Сопоставление параметров При вызове функции с данным именем происходит выбор из всех функций с этим именем, которые находятся в текущей области видимости, и для которых существуют преобразования типа, делающие вызов возможным. Выбирается та функция, которая
3.14.1. Сопоставление с IP-адресом
3.14.1. Сопоставление с IP-адресом Пусть мы хотим понять, содержит ли строка допустимый IPv4-адрес. Стандартно он записывается в точечно-десятичной нотации, то есть в виде четырех десятичных чисел, разделенных точками, причем каждое число должно находиться в диапазоне от 0 до
3.14.2. Сопоставление с парой «ключ-значение»
3.14.2. Сопоставление с парой «ключ-значение» Иногда приходится работать со строками вида «ключ=значение» (например, при разборе конфигурационного файла приложения).Следующий код извлекает ключ и значение. Предполагается, что ключ состоит из одного слова, значение
3.14.4 Сопоставление с числовыми константами
3.14.4 Сопоставление с числовыми константами Сопоставление с простым целым десятичным числом — самое простое. Число состоит из необязательного знака и последовательности цифр (правда, Ruby позволяет использовать знак подчеркивания в качестве разделителя цифр). Отметим, что
3.14.5 Сопоставление с датой и временем
3.14.5 Сопоставление с датой и временем Пусть надо выделить дату и время, записанные в формате mm/dd/yy hh:mm:ss. Вот первая попытка: datetime = /(dd)/(dd)/(dd) (dd): (dd): (dd)/.Но такой образец распознает некоторые некорректные даты и отвергает правильные. Следующий вариант более избирателен.
3.14.8. Сопоставление с номером версии
3.14.8. Сопоставление с номером версии Принято присваивать библиотекам и приложениям номера версий, состоящие из трёх чисел, разделенных точками. Следующее регулярное выражение сопоставляется с подобной строкой, выделяя попутно имя пакета и отдельные части номера
8.2.2. Сопоставление объявлений в разных файлах
8.2.2. Сопоставление объявлений в разных файлах Одна из проблем, вытекающих из возможности объявлять объект или функцию в разных файлах, – вероятность несоответствия объявлений или их расхождения в связи с модификацией программы. В С++ имеются средства, помогающие
Глава 5 ПРОЕКТНАЯ ПРОЦЕДУРА РАЗРАБОТКИ ФУНКЦИОНАЛЬНЫХ ОПИСАНИЙ
Глава 5 ПРОЕКТНАЯ ПРОЦЕДУРА РАЗРАБОТКИ ФУНКЦИОНАЛЬНЫХ ОПИСАНИЙ 5.1. ОБЩИЕ СВЕДЕНИЯ О ПРОЕКТНОЙ ПРОЦЕДУРЕ Развитие отдельных направлений программирования, филологии, психологии, теории проектирования и искусственного интеллекта подошло к точке, когда ощущается
5.4. РЕКОМЕНДАЦИИ НАЧИНАЮЩИМ ПО СОСТАВЛЕНИЮ ОПИСАНИЙ АЛГОРИТМОВ И ЭВРОРИТМОВ
5.4. РЕКОМЕНДАЦИИ НАЧИНАЮЩИМ ПО СОСТАВЛЕНИЮ ОПИСАНИЙ АЛГОРИТМОВ И ЭВРОРИТМОВ Первые попытки работы с проектной процедурой требуют огромного количества листов бумаги, но это необходимо, так как позволяет внимательно рассмотреть отдельный лист и относительно