ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Categories:

Служебное слово or в C++ и Лафоре

Очередная ошибка в учебнике Лафоре. Глава 14 «Шаблоны и исключения», стр.670, цитата из программы XDIST2:
class Distance
{
private:
    int feet;
    float inches;
public:
    class InchesEx                    // класс исключения
    {
    public:
        string origin;
        float iValue;
                                      // конструктор с двумя аргументами
        InchesEx(string or, float in) // ошибка
        {
            origin = or;              // ошибка
            iValue = in;
        }
    };

    // ... другие члены класса Distance

};

В языке программирования C++ для некоторых операторов определены синонимы. Например, для оператора логического сложения || определен синоним or. То есть or является служебным словом и не может использоваться в качестве идентификатора переменной, как это сделал Лафоре в цитируемой программе. Данную ошибку легко исправить: я просто заменил or на ori.

Источники:
https://en.cppreference.com/w/cpp/keyword/or
https://en.cppreference.com/w/cpp/language/operator_alternative
https://ru.wikipedia.org/wiki/Операторы_в_C_и_C++
https://ru.wikipedia.org/wiki/Диграф_(языки_Си)

В интернетах пишут, что синонимы для операторов включены в стандарт C++98. Четвертую редакцию своего учебника Лафоре написал уже позже, но программы, похоже, перешли с предыдущих редакций, которые выходили до 1998 года. Таким образом, эта ошибка как-то проскочила через подготовку четвертой редакции.

Обсуждение на портале Stackoverflow.com:
https://stackoverflow.com/questions/21778523/why-do-these-alternative-operator-representations-exist
Tags: Образование, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments